1

我有一个应用程序可以更改媒体文件夹中的一些文件(特别是 DCIM/Camera)

在我进行这些更改后,应用程序发送此广播以强制 MediaScanner 运行,以便我的更改在下次打开时反映在 Gallery 应用程序中。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

这适用于运行股票 android 的设备。但是在带有 motoblur 的设备上它会失败并在日志中给我这个输出:

Permission Denial: broadcasting Intent { act=android.intent.action.MEDIA_MOUNTED dat=file:///mnt/sdcard } from com.my.package (pid=20882, uid=10109) requires com.motorola.blur.service.blur.Permissions.INTERACT_BLUR_SERVICE due to registered receiver BroadcastFilter{40a444c8 ReceiverList{40a22888 13696 com.motorola.blur.service.blur/10023 remote:40a340b8}}

有什么方法可以使用这个INTERACT_BLUR_SERVICE权限吗?还是有其他方法可以让媒体扫描仪按命令运行?

4

2 回答 2

0

AndroidManifest在解决问题时不要添加此权限吗?...像这样:

<uses-permission android:name=
         "com.motorola.blur.service.blur.Permissions.INTERACT_BLUR_SERVICE"/>
于 2012-01-05T16:35:18.040 回答
0

我从来没有找到触发媒体扫描仪的方法。但是我被指出了一种删除图像和视频的不同方法,而不仅仅是删除 SD 卡上的文件,我现在使用 ContentResolver 来删除媒体。

这是我如何完成它的片段:

        //Uri imgUri = Uri.parse("content://android.provider.MediaStore.Images.Media");
        ContentResolver cr = getContentResolver();
        int count = cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null);
        count += cr.delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null);
        Log.i(myTag, "Deleted " + count + " files from media database");
于 2012-02-01T16:51:09.463 回答