Desde el navegador de internet, recibo un Intent.ACTION_SEND
Esta es la documentación y uso que he encontrado para este intent.
android.provider.Browser
EXTRA_SHARE_SCREENSHOT
Public static final java.lang.String EXTRA_SHARE_SCREENSHOT
Stores a Bitmap extra In an Intent representing the screenshot of a page To share. When receiving an Intent.ACTION_SEND from the Browser, use this To access the screenshot.
uso : Bundle extras = Intent.getExtras();
uso : Bitmap screenshot = (Bitmap) extras.get("share_screenshot");
y aqui lo que yo hago :
B4X:
Dim In As Intent
In = Activity.GetStartingIntent
Log(In)
'este es el log
'(Intent) Intent { act=android.intent.action.SEND typ=text/plain flg=0x3000000 cmp=mmm.calen/.main (has extras) }
Log(In.ExtrasToString)
'este es el log
'Bundle[{share_screenshot=android.graphics.Bitmap@40530438, android.intent.extra.TEXT=http://www.google.es/, android.intent.extra.SUBJECT=Google, share_favicon=android.graphics.Bitmap@40525098}]
If In.HasExtra("share_screenshot") Then
Msgbox("tiene bitmap", "")
'aqui bbyte es nulo
Dim bbyte() As Byte
bbyte = In.GetExtra("share_screenshot")
'aqui el bitmap no se inicializa
Dim b As Bitmap
b.Initialize2(In.GetExtra("share_screenshot"))
'aqui tampoco, java.lang.NullPointerException
Dim b As Bitmap
b.Initialize3(In.GetExtra("share_screenshot"))
La pregunta es, ¿teneis idea de como puedo extraer el bitmap del intent. ?
He encontrado algo, pero todavia no lo habia posteado porque la imagen resultante es de 90 x 80 pixel, y no incluye toda la pagina, sólo la parte visible. (se ve fatal)
B4X:
Dim In As Intent
In = Activity.GetStartingIntent
If In.HasExtra("share_screenshot") Then
Dim r As Reflector
r.Target = In
Dim uri As Bitmap
' Uri = r.CreateObject2("getParcelableExtra", "share_screenshot", "java.lang.string")
uri = r.RunMethod2("getParcelableExtra", "share_screenshot", "java.lang.String")
Dim Out As OutputStream
Out = File.OpenOutput(File.DirRootExternal, "web.png", False)
uri.WriteToStream(Out, 100, "PNG")
Out.Close
End If
El problema, creo, debe estar en r.runmethod, pero de momento ni idea.