仅在Android版本6及更高版本的三星设备中抛出SecurityException

时间:2018-01-20 14:17:23

标签: java android samsung-mobile samsung-mobile-sdk

以下问题与Android版本6及更高版本有关。

我已经完成了一些编码,这些编码适用于motoG,Nexus,Pixel等所有设备,但代码会在Samsung设备中抛出SecurityException。

异常消息是

  

UiAutomatorTestRunner:java.lang.SecurityException:获取内容提供商设置时无法为调用者android.app.ApplicationThreadProxy@a70d2(pid = 25949)找到应用

我尝试了赶上三星Galaxy S5并且它有效。 但对于三星J7,此异常也会在代码中的其他位置抛出。 我不认为在这里添加try catch块是正确的方法。

抛出异常的代码是:

  

Intent intent = AndroidServicesUtil.getPackageManager()。getLaunchIntentForPackage(packageName);

异常堆栈是: >

java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy@123375c (pid=6375) when getting content provider settings
at android.os.Parcel.readException(Parcel.java:1621)
at android.os.Parcel.readException(Parcel.java:1574)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:4292)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:6570)
at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:2388)
at android.content.ContentResolver.acquireProvider(ContentResolver.java:1505)
at android.provider.Settings$NameValueCache.lazyGetProvider(Settings.java:1431)
at android.provider.Settings$NameValueCache.getStringForUser(Settings.java:1505)
at android.provider.Settings$Secure.getStringForUser(Settings.java:8662)
at android.provider.Settings$Secure.getIntForUser(Settings.java:8732)
at android.provider.Settings$Secure.getInt(Settings.java:8722)
at android.app.ApplicationPackageManager.getHiddenList(ApplicationPackageManager.java:814)
at android.app.ApplicationPackageManager.isHidden(ApplicationPackageManager.java:859)
at android.app.ApplicationPackageManager.queryIntentActivitiesAsUser(ApplicationPackageManager.java:925)
at android.app.ApplicationPackageManager.queryIntentActivities(ApplicationPackageManager.java:907)
at android.app.ApplicationPackageManager.getLaunchIntentForPackage(ApplicationPackageManager.java:302)
at com.myclass.launchApp(SessionManager.java:595)

任何人都可以帮助我理解为什么仅在Android版本> = 6的三星设备中抛出SecurityException。

感谢。

1 个答案:

答案 0 :(得分:-1)

如果您的设备在Android版本> = 6上运行,那么您必须添加运行时权限,因为这些Android版本仅从运行时获取权限而不是清单文件。

这些版本低于6,他们将自动从清单文件中访问权限。如果要添加运行时权限,则问题将得到解决。