Java 安全异常:权限拒绝

Java 安全异常:权限拒绝,java,android,android-permissions,Java,Android,Android Permissions,该应用程序用于运行。然而,就在最近,它开始停止工作。该设备运行的是Android Nutella。下面是日志 java.lang.SecurityException: Permission Denial: reading com.google.android.music.store.ConfigContentProvider uri content://com.google.android.music.ConfigContent/one-key/2/ExplicitRestrictedByPa

该应用程序用于运行。然而,就在最近,它开始停止工作。该设备运行的是Android Nutella。下面是日志

 java.lang.SecurityException: Permission Denial: reading com.google.android.music.store.ConfigContentProvider uri content://com.google.android.music.ConfigContent/one-key/2/ExplicitRestrictedByParentControl from pid=2500, uid=10373 requires the provider be exported, or grantUriPermission()
应用程序在最后一行(包含在SongParser方法中)的以下代码段中崩溃

在通过运行时权限方法请求权限后,我在以下方法中授予Uri权限

 private void startService() {
    //start intent to RssService for feedback
    intent = new Intent(getActivity(), SongService.class);
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    getContext().grantUriPermission("xxx.xxx.xxx.SongService",Uri.parse("content://com.google.android.music.MusicContent/audio"),Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intent.putExtra(SongService.RECEIVER, resultReceiver);
    getActivity().startService(intent);

}
这里是SongService调用SongParser的地方

@Override
protected void onHandleIntent(Intent intent) {

        List<String> eventItems= null;
    if (haveNetworkConnection()) {
        parser = new SongParser();
        eventItems = parser.getAllArtists(getApplicationContext());
    }
        Bundle bundle = new Bundle();
        bundle.putSerializable(ITEMS, (Serializable) eventItems);
        ResultReceiver receiver = intent.getParcelableExtra(RECEIVER);
        receiver.send(0, bundle);}}
@覆盖
受保护的手部内容无效(意图){
List eventItems=null;
如果(haveNetworkConnection()){
parser=new-SongParser();
eventItems=parser.getAllArtists(getApplicationContext());
}
Bundle=新Bundle();
bundle.putSerializable(ITEMS,(Serializable)eventItems);
ResultReceiver receiver=intent.getParcelableExtra(接收方);
receiver.send(0,bundle);}
我也在清单中包含了权限。同样,这一例外似乎是自己发生的

<permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

您没有访问该
内容提供者的权限。它没有被导出,并且该应用程序没有向您传递可以用来访问它的
Uri


由于
Uri
可能来自您未编写的应用程序,因此该应用程序的更新显然改变了此行为。

您无权访问该
内容提供者。它没有被导出,并且该应用程序没有向您传递可以用来访问它的
Uri


由于假定
Uri
来自您未编写的应用程序,显然该应用程序的更新改变了此行为。

发生的情况是,出于某种原因,(导出的)MusicContent provider将重定向到ConfigContentProvider,而ConfigContentProvider是未导出的

看来解决这个问题的办法是打开谷歌音乐播放器。如果您有一段时间没有启动它,它将重定向到com.google.android.music.store.ConfigContentProvider并触发SecurityException。这有点问题,但至少我可以告诉我的用户该怎么做。如果你能想出更好的办法,请告诉我


提交bug也是一个好主意。

由于某种原因,(导出的)MusicContent提供程序将重定向到ConfigContentProvider,而ConfigContentProvider未导出

看来解决这个问题的办法是打开谷歌音乐播放器。如果您有一段时间没有启动它,它将重定向到com.google.android.music.store.ConfigContentProvider并触发SecurityException。这有点问题,但至少我可以告诉我的用户该怎么做。如果你能想出更好的办法,请告诉我


提交bug也是个好主意。

我在使用Google Play Music ContentProvider时也遇到了同样的问题。它在我的手机上运行良好,但对一些用户来说似乎崩溃了。我播放的音乐版本是7.6.4620-1.P.3889101,你呢?是的,版本与我的应用相同。我向我的应用程序推送了一个更新,该更新捕捉到安全异常并忽略它。有人给我发邮件告诉我已经修好了。我不知道发生了什么,但嘿,问题显然解决了。我在使用谷歌播放音乐内容提供商时也遇到了同样的问题。它在我的手机上运行良好,但对一些用户来说似乎崩溃了。我播放的音乐版本是7.6.4620-1.P.3889101,你呢?是的,版本与我的应用相同。我向我的应用程序推送了一个更新,该更新捕捉到安全异常并忽略它。有人给我发邮件告诉我已经修好了。我不知道发生了什么,但嘿,问题显然解决了。
<permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />