Java 安全异常:权限拒绝
该应用程序用于运行。然而,就在最近,它开始停止工作。该设备运行的是Android Nutella。下面是日志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
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" />