为什么play-services-location需要android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE权限?

前端之家收集整理的这篇文章主要介绍了为什么play-services-location需要android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE权限?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我所有的 AndroidManifest.xml是:
  1. <uses-permission android:name="android.permission.INTERNET"/>
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  3. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  4. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

将APK上传到开发者控制台后,它会添加两个新权限:

我的build.gradle:

  1. apply plugin: 'com.android.application'
  2.  
  3. android {
  4. compileSdkVersion 22
  5. buildToolsVersion "22.0.1"
  6.  
  7. defaultConfig {
  8. applicationId "net.perspiratron.ifpaprofile"
  9. minSdkVersion 15
  10. targetSdkVersion 22
  11. versionCode 3
  12. versionName "1.2"
  13. }
  14. buildTypes {
  15. release {
  16. minifyEnabled false
  17. proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
  18. }
  19. }
  20. }
  21.  
  22. dependencies {
  23. compile fileTree(dir: 'libs',include: ['*.jar'])
  24. // wearApp project(':wear')
  25. compile 'com.android.support:appcompat-v7:22.2.0'
  26. compile 'com.google.android.gms:play-services-analytics:7.5.0'
  27. compile 'com.google.android.gms:play-services-location:7.5.0'
  28. compile 'com.jjoe64:graphview:4.0.0'
  29. }

我唯一添加的是播放服务位置.为什么这个图书馆需要它?

解决方法

简短的答案:我不认为播放服务位置确实需要这些权限.它似乎也不需要android.permission.ACCESS_NETWORK_STATE或android.permission.INTERNET,也正在添加.

更长的答案:
看看我的清单合并日志,似乎所有这四个权限都被包含在播放服务地图的请求中,哪个位置是自动链接的.我的应用程序没有使用-maps,只是位置.

此外,我发现这种行为刚刚出现在播放服务位置的7.5.0版本中;以前的版本不包括-maps,并且不添加这些权限.

实际上我怀疑这种与播放服务地图的连接是偶然的,将来会在GMS的版本中被删除.

跟随Mark Murphy(CommonsWare)提供的链接,您可以通过在清单中添加以下行来从应用程序中删除这些权限:

  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" tools:node="remove" />
  2. <uses-permission android:name="android.permission.INTERNET" tools:node="remove" />
  3. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />

请注意,您的开头< manifest ...>中还需要xmlns:tools =“http://schemas.android.com/tools”要使这些工作.并且通常的注意事项适用:我的应用程序在采取这一步后工作正常,但YMMV.

更新2015年9月10日:Mark Murphy(@commonsware)在他的博客上完成了an excellent writeup on this issue,包括讨论我的解决方案的风险.

猜你在找的Android相关文章