CodenameOne-带有android.buildToolsVersion = 27的Android权限错误

时间:2018-09-04 16:30:39

标签: android codenameone

我尝试使用android.buildToolsVersion = 27构建应用。 构建和安装成功,但是在启动时失败:

  

E / DatabaseUtils(2346):java.lang.SecurityException:权限   拒绝:用户的获取/设置设置要求以用户-2的身份运行但正在调用   来自用户0;这需要   android.permission.INTERACT_ACROSS_USERS_FULL E / DatabaseUtils(2346):   在   com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)   E / DatabaseUtils(2346):在   android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)   E / DatabaseUtils(2346):在   com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)   E / DatabaseUtils(2346):在   android.content.ContentProvider $ Transport.call(ContentProvider.java:279)   E / DatabaseUtils(2346):在   android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)   E / DatabaseUtils(2346):在   android.os.Binder.execTransact(Binder.java:388)E / DatabaseUtils(   2346):在dalvik.system.NativeStart.run(本机方法)   W / ActivityManager(2346):权限拒绝:用户的获取/设置设置   要求以用户-2的身份运行,但正在从用户0调用;这需要   android.permission.INTERACT_ACROSS_USERS_FULL

还尝试将android.targetSDKVersion设置为27、25和23,结果相同。

我已将其添加到android.xpermissions中,结果相同:

<permission android:protectionLevel="signature" android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>

以前,我使用了android.buildToolsVersion = 25,但未指定android.targetSDKVersion,并且一切正常。此设置仍然有效,但是我想迁移到较新的版本。

我正在使用具有Android 4.3的Samsung Galaxy S3

有帮助吗?

谢谢

2 个答案:

答案 0 :(得分:1)

没有OEM签名,您无法添加该权限。您正在使用在4.x时代有效的API,例如让用户沙箱以可读/写方式在任意位置打开数据库。 -2本质上是您的应用程序特权,而用户0则是设备所有者特权。你可能拿不到那些。

答案是Google不再允许您这样做。您可以定位较早的API级别,但如果您这样做,那么Google不会接受您进入Play商店。

答案 1 :(得分:0)

崩溃不是由此错误引起的,而是由另一个错误引起的,原因是以下事实:在构建api级别27时,对v4的支持被删除,而我正在使用它来获取gcm令牌。我已经在这里记录了所有内容:CodenameOne - Android app fails to start when building with android.buildToolsVersion=27