我正在使用https://stackoverflow.com/a/2459624/563306
的解决方案Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
sendBroadcast(intent);
我也试过https://stackoverflow.com/a/11010565/563306
//Convert to byte array
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Intent in1 = new Intent(this, Activity2.class);
in1.putExtra("image",byteArray);
sendBroadcast(in1);
当我使用上述任何一种方法并且没有日志声明时,我的接收器没有收到广播。但是如果我传递简单的字符串而不是位图或字节数组,我会收到。
答案 0 :(得分:2)
Android 3.1之后发生了一项防止恶意软件的更改。
这解决了我的问题, https://stackoverflow.com/a/9784004/563306
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent. FLAG_INCLUDE_STOPPED_PACKAGES);
答案 1 :(得分:0)
如果您使用startActivity()
而不是BroadcastReceivers,然后只是在第二个活动中收到意图,那么我相信它会起作用。
如前所述here,你真的不应该使用BroadcastReceivers来处理位图。我不确定这是否有效,但请尝试使用您提到的第二种方法并在Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
之外执行onReceive()
。
答案 2 :(得分:0)
以下示例方法演示了如何调用系统的媒体扫描程序,将照片添加到媒体提供程序的数据库,使其在Android Gallery应用程序和其他应用程序中可用。
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
试试这个!!可能会解决你的问题......
其中mCurrentPhotoPath是ImageFile的路径。