发送额外位图时无法接收广播

时间:2014-04-25 22:00:37

标签: android android-broadcast

我正在使用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);

当我使用上述任何一种方法并且没有日志声明时,我的接收器没有收到广播。但是如果我传递简单的字符串而不是位图或字节数组,我会收到。

3 个答案:

答案 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的路径。