为什么从AndroidManifest.xml删除权限不起作用?

时间:2018-02-13 20:07:09

标签: android android-studio android-permissions user-permissions android-install-apk

Play商店中有一个名为bodyweight fitness的应用没有任何权限。它也可以在git hub上使用: https://github.com/mazurio/bodyweight-fitness-android

我使用了git hub中的文件并使用 Android Studio 编译了apk(不更改文件)。当我尝试安装自编译应用程序apk时,它会告诉我它将使用INTERNET ,尽管Play商店应用程序没有。这个应用程序没有理由需要任何互联网连接。因此,我从 AndroidManifest.xml

中删除了这一行

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

在编译和安装应用程序后,它仍然告诉我它将使用INTERNET。有人知道为什么以及如何删除此权限?

PS:我也问了开发人员,但我还没有回复。

更新:

  • 你是对的,它是从另一部分添加的:crashlytics。
  • 你是对的,也是对隐藏的许可。它显示在 应用程序安装后的应用程序详细信息并显示在播放中 单击“权限”按钮时存储。

3 个答案:

答案 0 :(得分:7)

每个android lib都包含包含包,权限,活动等的清单文件,因此您的应用程序将显示依赖项的所有权限。您可以在{projectDir} / {moduleDir} / build / outputs / logs / manifest-merger - * - report.txt

查看最终清单创建日志。

此日志将包含类似

的内容
uses-permission#android.permission.INTERNET
ADDED from {myModulePath}/app/src/main/AndroidManifest.xml:6:5-67
MERGED from [net.hockeyapp.android:HockeySDK:4.1.1] /Users/devindi/.android/build-cache/ce70c6f87efc05633a59a88fccdb712db509e22d/output/AndroidManifest.xml:12:5-67
MERGED from [com.crashlytics.sdk.android:crashlytics:2.6.8] /Users/devindi/.android/build-cache/424d420499b90aec0a26ab1b5f575e318d0342b9/output/AndroidManifest.xml:9:5-67
MERGED from [com.crashlytics.sdk.android:beta:1.2.5] /Users/devindi/.android/build-cache/be2498e53f6aa976b3927954da943b23f0a800f6/output/AndroidManifest.xml:9:5-67
MERGED from [com.crashlytics.sdk.android:crashlytics-core:2.3.17] /Users/devindi/.android/build-cache/e5b1b150113ac2f0789b76a886f379cdafa8af2b/output/AndroidManifest.xml:52:5-67
MERGED from [com.crashlytics.sdk.android:answers:1.3.13] /Users/devindi/.android/build-cache/c86f3a3daec296cb6a32deb0b3d0c3f1370a024f/output/AndroidManifest.xml:9:5-67
MERGED from [io.fabric.sdk.android:fabric:1.3.17] /Users/devindi/.android/build-cache/0a51b13dbc46dc870c598edab9d128bf8f26a8d4/output/AndroidManifest.xml:29:5-67

如您所见,我在我的清单和hockeyapp请求网络权限,crashlytics,fabric libs也请求相同的权限。 https://developer.android.com/studio/build/manifest-merge.html

要强行删除权限,只需将tools:node=”remove”添加到您的权限声明中,如下所示:

<uses-permission android:name=”android.permission.INTERNET” tools:node=”remove” />

答案 1 :(得分:1)

这是因为INTERNET权限是无害的&#34;允许。这意味着您不必向用户请求许可,并且它不会在Google Play商店中显示

自Android 5.0起,权限具有&#34;保护级别&#34;。有些是危险的,有些是正常的。正常意味着您作为应用开发者不必向用户请求许可,并且不会在Google Play中显示。危险意味着Google Play会显示它,并且您必须要求用户许可。

来源和进一步阅读:Android Developers

答案 2 :(得分:1)

通过Android Studio在开发过程中安装的应用程序,从APK安装的应用程序和从Google Play商店安装的应用程序之间存在差异。在后一种情况下会自动授予某些权限,例如Internet或在其他应用程序之上绘图。在规划部署策略时,您需要考虑到这一点。