从AndroidManifest.xml删除重复权限

时间:2018-10-17 00:36:04

标签: android android-manifest

AndroidManifest.xml包含以下(以及更多)权限:

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

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

WRITE_EXTERNAL_STORAGE被包含两次。因此,我删除了一个并重新排序:

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

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

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

录音机(https://github.com/3llomi/RecordView)通常请求存储访问权限和麦克风访问权限。但是更改之后,它不再请求存储访问权限,因此记录视图不起作用。

我会从设备上卸载应用程序,以进行每次清单更改以重置权限。 删除重复的行怎么可能导致这种情况?

1 个答案:

答案 0 :(得分:0)

AndroidManifest.xml的合并视图显示,另一个库也使用maxSdkVersion="18"声明了此权限:

enter image description here

该应用程序在API> 18上运行,因此我假设它未请求权限。删除maxSdkVersion使存储权限再次出现,并且记录器视图起作用:

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    tools:remove="android:maxSdkVersion" />

我的猜测是,由于WRITE_EXTERNAL_STORAGE被包含在AndroidManifest.xml中两次,清单合并过程仅将maxSdkVersion添加到其中之一。另一个WRITE_EXTERNAL_STORAGE没有maxSdkVersion,因此该应用程序也在API> 18上请求许可。