【问题标题】:Google Maps and java.lang.SecurityException谷歌地图和 java.lang.SecurityException
【发布时间】:2014-03-13 13:32:00
【问题描述】:

02-14 13:09:38.184:E/DatabaseUtils(2348):将异常写入包裹 02-14 13:09:38.184: E/DatabaseUtils(2348): java.lang.SecurityException:权限拒绝:获取/设置设置 用户要求以用户 -2 的身份运行,但从用户 0 调用;这需要 android.permission.INTERACT_ACROSS_USERS_FULL 02-14 13:09:38.184: E/DatabaseUtils(2348):在 com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140) 02-14 13:09:38.184:E/DatabaseUtils(2348):在 android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038) 02-14 13:09:38.184:E/DatabaseUtils(2348):在 com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607) 02-14 13:09:38.184:E/DatabaseUtils(2348):在 android.content.ContentProvider$Transport.call(ContentProvider.java:279) 02-14 13:09:38.184:E/DatabaseUtils(2348):在 android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273) 02-14 13:09:38.184:E/DatabaseUtils(2348):在 android.os.Binder.execTransact(Binder.java:388) 02-14 13:09:38.184: E/DatabaseUtils(2348): 在 dalvik.system.NativeStart.run(Native 方法)

我更新了我的应用程序。但我不能使用 Google Maps API。当我打开使用谷歌地图的活动时,它会显示上面的日志。 android.permission.INTERACT_ACROSS_USERS_FULL 添加到权限。

 <permission
        android:name="my.app.name.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="my.app.name.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>

【问题讨论】:

  • 也添加您的清单权限.....
  • 我做到了。 “...添加到权限中。”
  • 我的意思是在这里发布您的清单权限,以便所有人都可以看看。
  • 准备好了。但我认为这无济于事。/

标签: java android google-maps


【解决方案1】:

确保 uses-permission 元素不在 application 元素中。我不小心把它贴在那里一次,Android Studio 并没有告诉你这是个问题。一旦我将它移出,它就解决了这个问题。

例子:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.someapp.app" >

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

  <application ...>

...

【讨论】:

    【解决方案2】:

    android.permission.INTERACT_ACROSS_USERS_FULL 是签名级别的权限。除非它与系统具有相同的签名,否则您的应用将无法使用它。

    因此,在您的清单文件中添加以下权限。

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

    【讨论】:

    • 您可以实现,除非您是创建者或系统构建者,或者与他们合作,以便他们愿意用他们的证书签署您的 apk。换句话说,这对大多数开发人员来说是禁区。
    • 我认为你需要生成签名的apk。确切的解决方案不知道。
    • 我已经用过了。我试过使用发布签名。它不起作用。这让我抓狂。
    • 是的。我通常对所有应用程序使用相同的包装器。地图总是正常工作。直到今天早上。
    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2015-12-20
    • 2012-04-26
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多