【问题标题】:Play store says app uses GET_ACCOUNTS permission, but it doesn'tPlay 商店说应用程序使用 GET_ACCOUNTS 权限,但它没有
【发布时间】:2016-12-20 12:57:56
【问题描述】:

最近,Google 开始使用 android.permission.GET_ACCOUNTS 抱怨我的应用程序(在 Play 商店中的 Alpha 版),因此需要有一个指向“有效隐私政策”的链接。现在我没有那个,因为我的应用程序仍处于 alpha 阶段,但更奇怪的是我的 Manifest 中不需要 android.permission.GET_ACCOUNTS 权限。

我在下面列出了我确实需要的权限,

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

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

<permission android:name="xxx.permission.INTERNAL_NOTIFICATION" android:protectionLevel="signature" />
<uses-permission android:name="sxxx.permission.INTERNAL_NOTIFICATION" />

以及我的 Gradle 依赖项:

apply plugin: 'com.google.gms.google-services'

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

// Support Library
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:recyclerview-v7:23.2.0'
compile 'com.android.support:cardview-v7:23.2.0'

// Google Play Services (Push notifications)
compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-ads:8.3.0'
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'

// Calligraphy (Font)
compile 'uk.co.chrisjenx:calligraphy:2.2.0'

// Smack (XMPP client)
compile 'org.igniterealtime.smack:smack-android:4.1.1'
compile 'org.igniterealtime.smack:smack-tcp:4.1.1'

// AndroidPlot (Charts)
compile 'com.androidplot:androidplot-core:0.6.1'

// Test Targets
testCompile('junit:junit:4.12', 'org.mockito:mockito-core:1.9.5')
testCompile 'org.json:json:20140107'

如果有人能指出android.permission.GET_ACCOUNTS 的来源,我将不胜感激。

【问题讨论】:

  • 猜测:来自 Play 服务?
  • 是的,我自己的疯狂猜测也会在 Play 服务上,但我没有找到任何关于这种情况的参考。我也不明白我为什么要为它提供隐私政策:“我们使用 Play 服务来传递通知。他们出于某种不明原因使用您的帐户”
  • 另外,摆脱compile 'com.google.android.gms:play-services:8.3.0'。或者,摆脱其他 play-services-... 依赖项。 com.google.android.gms:play-services:8.3.0 是所有 Play Services SDK,这很可能不是您想要的。但是,如果是,那么说“给我一切,然后给我第二份广告、身份和 GCM”是多余的。
  • @CommonsWare 听起来可能。我会试试的。

标签: android android-permissions


【解决方案1】:

移除这个依赖:

compile 'com.google.android.gms:play-services:8.3.0'

这是 (a) 多余的,(b) 包含大量您不使用的服务,这会大大增加您的应用程序的大小和方法数量,并且 (c) 将包含每个播放服务的权限集 - 包括GET_ACCOUNTS

您的其他播放服务依赖项将单独引入他们需要的核心播放服务库。

【讨论】:

    【解决方案2】:

    在整个项目中对 Android Studio 中的 android.permission.GET_ACCOUNTS (Ctrl+Shift+F) 进行文本搜索。它可能会向您展示添加此权限要求的内容。

    【讨论】:

    • 我认为无论如何都不能在 Manifest 文件之外添加权限。
    • 这可能会找到在依赖项 AndroidManifest.xml 之一中声明的权限
    【解决方案3】:

    通过查看您的 Gradle 依赖项,您正在使用 GCM 消息通知服务,对吗?

    因此,以下链接中已接受的答案很好地解释了这种情况:

    GET_ACCOUNTS permission while using GCM - Why is this needed?

    【讨论】:

    • 是的,该链接中的答案是 GCM 在 ICS 之前的设备上使用 android.permission.GET_ACCOUNTS。我的应用使用最低 SDK 16。
    • 引用其中一个答案,“GCM 工作不再需要 GET_ACCOUNTS 权限”(2013 年 10 月)
    • 太好了,你的问题解决了。?如果是,则将我的答案标记为已接受或删除您的问题,因为它已经有答案。 @Joakim
    • 什么?你没有回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2020-08-03
    • 2021-10-18
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多