为什么我的应用说我要求联系人的许可?

时间:2016-03-30 03:26:46

标签: android android-contacts android-permissions

我有一个表情应用程序,说我要求联系人的权限...但我不是。我无法弄清楚这是为什么......

我有应用内结算功能,并且可以访问Google适配数据以及Google Analytics。

以下是我的清单中的权限列表:

<!-- Normal Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="com.android.vending.BILLING" />

    <!-- Dangerous Permissions -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <!-- Permissions required by the wearable app -->
    <uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

以下是Play商店中此应用权限的列表:

In-app purchases
Identity
find accounts on the device
Contacts
find accounts on the device
Location
precise location (GPS and network-based)
approximate location (network-based)
Photos/Media/Files
modify or delete the contents of your USB storage
read the contents of your USB storage
Storage
modify or delete the contents of your USB storage
read the contents of your USB storage
Other
receive data from Internet
full network access
view network connections
run at startup
prevent device from sleeping
use accounts on the device

App依赖项:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    wearApp project(':Wearable')
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.support:wearable:1.3.0'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services-analytics:8.3.0'
    compile files('libs/httpclient-4.5.1.jar')
    compile files('libs/apache-httpcomponents-httpclient.jar')
    compile files('libs/apache-httpcomponents-httpclient-cache.jar')
    compile files('libs/apache-httpcomponents-httpcore.jar')
    compile files('libs/apache-httpcomponents-httpmime.jar')
    compile files('libs/GoogleConversionTrackingSdk-2.2.4.jar')
    compile files('libs/feedback_v6.jar')
}

佩戴依赖关系:

dependencies {
    compile 'com.google.android.support:wearable:1.3.0'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.android.support:support-v13:23.1.0'
    compile 'com.google.android.gms:play-services-analytics:8.3.0'
}

3 个答案:

答案 0 :(得分:9)

在我的某个应用中,我遇到了一个问题,即我的应用程序要求获取我从未要求过的权限,原因就是谷歌播放服务。

我们必须明确提及我们的应用需要哪些Google Play服务。例如,如果我们需要广告,我们需要使用

  

com.google.android.gms:播放服务的广告:8.4.0

而不是

  

com.google.android.gms:播放服务:8.4.0

即使我们的应用程序不需要,Google Play服务也会要求获得所有服务的许可。

请检查https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project并仅使用您需要的内容,看看是否能解决您的问题。

在您的情况下,我怀疑Google帐户登录是联系的原因。

希望这会有所帮助。一切顺利。

答案 1 :(得分:5)

来自@Natarajan Raman的好建议!!我只是想补充一下来自@CommonsWare的一篇很棒的文章,Hey, Where Did These Permissions Come From?解释了这个问题。

引用文章:

  

您可能会发现自己处于某种情况   想要一个依赖,但你不想要的权限   依赖想要。您可以尝试阻止合并的许可   过程,通过在您自己的清单中包含一个元素   (例如,在主要的源集中)使用工具:node =“remove”:

因此,如果您只遇到“联系人”权限问题,可以在“清单”中添加:

 <uses-permission android:name="android.permission.READ_CONTACTS" tools:node="remove" />

将删除不受欢迎的权限。

希望这有帮助!!!

答案 2 :(得分:0)

固定!!!

将依赖项更改为:

    compile 'com.google.android.gms:play-services-fitness:8.3.0'
    compile 'com.google.android.gms:play-services-wearable:8.3.0'
    compile 'com.google.android.gms:play-services-analytics:8.3.0'
    compile 'com.google.android.gms:play-services-appindexing:8.3.0'

而不是:

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

奖金:也让我的应用程序小得多!!