Motoblur阻止我强制媒体扫描程序运行

时间:2012-01-05 16:29:33

标签: android motorola android-mediascanner

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

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

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

这适用于运行stock 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权限吗?或者是否有其他方法可以让Media Scanner按命令运行?

2 个答案:

答案 0 :(得分:0)

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

<uses-permission android:name=
         "com.motorola.blur.service.blur.Permissions.INTERACT_BLUR_SERVICE"/>

答案 1 :(得分: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");