【发布时间】:2014-08-24 14:33:07
【问题描述】:
在我的应用程序中,我需要按照 SO 上的其他几个线程中记录的以下方式启动主要活动:
final String packageName = getApplicationContext().getPackageName();
final Intent launchIntent = getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(launchIntent);
上面的代码行在我的 Android 库项目中,因为在这个地方我不知道我的 Main 活动的类。
在测试设备上通过 USB 接口部署应用程序时,这就像一个魅力,但在 4.3 设备上从 Google Play 安装应用程序时会出现此错误。
07-03 13:54:19.843:E/DatabaseUtils(2344):将异常写入包裹 07-03 13:54:19.843: E/DatabaseUtils(2344): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is call from user 0;这需要 android.permission.INTERACT_ACROSS_USERS_FULL 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 android.content.ContentProvider$Transport.call(ContentProvider.java:279) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 android.os.Binder.execTransact(Binder.java:388) 07-03 13:54:19.843:E/DatabaseUtils(2344):在 com.android.server.SystemServer.init1(本机方法) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 com.android.server.SystemServer.main(SystemServer.java:2012) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 java.lang.reflect.Method.invokeNative(Native Method) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 java.lang.reflect.Method.invoke(Method.java:525) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 07-03 13:54:19.843: E/DatabaseUtils(2344): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 07-03 13:54:19.843:E/DatabaseUtils(2344):在 dalvik.system.NativeStart.main(本机方法)
有人遇到过同样的问题吗?
编辑:
我没有提到 SO 中的几个线程提到“android.permission.INTERACT_ACROSS_USERS_FULL 是签名级别的权限。除非它与系统具有相同的签名,否则您的应用将无法使用它。 em>"
Permission Denial: startActivity asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
Permission Denial: this requires android.permission.INTERACT_ACROSS_USERS_FULL
What do I do about: this requires android.permission.INTERACT_ACROSS_USERS_FULL
但是由于上面的代码似乎被其他开发人员使用,我仍然希望有一个解决方案。
编辑 2:
删除与问题无关的堆栈。
【问题讨论】:
标签: android android-permissions