从 Android 项目中删除 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 权限
Remove WRITE_EXTERNAL_STORAGE and READ_EXTERNAL_STORAGE permissions from Android Project
我从项目的 AndroidMainfest.xml
和 AssemblyInfo.cs
文件中删除了 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
权限。
我将 .apk 上传到 Play 商店,在 Bundle 权限中显示了写入和读取权限。
然后我使用 Android Studio 中的 Analyze APK
功能分析了 .apk
,其中,AndroidMainfest.xml
具有 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
.
虽然,我在 运行 时要求 CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage)
,但是当我删除它并分析 APK 时,它仍然包含清单中的 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
权限文件。
然后我将 android:requiredFeature="false"
标志添加到写入和读取权限,如下所示:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:requiredFeature="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:requiredFeature="false" />
当我再次分析 APK 时,android:requiredFeature="false"
具有写入和读取权限。但是在 Play Store 上,在 Bundle 权限中,它们和以前一样存在。
我不知道为什么这些权限会在那里结束?
@Sergey 点评:可以从依赖库中合并。您可以检查您正在使用的任何库是否在其清单文件中具有这些权限。
我查看了一下,发现这篇文章 How Libraries can silently add permissions to your Android App and the Fix。 成功了。
但是我用的是相机,我把这些照片存到Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
里了。这需要 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
权限。
所以,我用 FileSystem.CacheDirectory
替换了路径并且它起作用了(内部存储不需要清单文件中的读写权限)。
我从项目的 AndroidMainfest.xml
和 AssemblyInfo.cs
文件中删除了 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
权限。
我将 .apk 上传到 Play 商店,在 Bundle 权限中显示了写入和读取权限。
然后我使用 Android Studio 中的 Analyze APK
功能分析了 .apk
,其中,AndroidMainfest.xml
具有 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
.
虽然,我在 运行 时要求 CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage)
,但是当我删除它并分析 APK 时,它仍然包含清单中的 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
权限文件。
然后我将 android:requiredFeature="false"
标志添加到写入和读取权限,如下所示:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:requiredFeature="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:requiredFeature="false" />
当我再次分析 APK 时,android:requiredFeature="false"
具有写入和读取权限。但是在 Play Store 上,在 Bundle 权限中,它们和以前一样存在。
我不知道为什么这些权限会在那里结束?
@Sergey 点评:可以从依赖库中合并。您可以检查您正在使用的任何库是否在其清单文件中具有这些权限。
我查看了一下,发现这篇文章 How Libraries can silently add permissions to your Android App and the Fix。 成功了。
但是我用的是相机,我把这些照片存到Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
里了。这需要 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
权限。
所以,我用 FileSystem.CacheDirectory
替换了路径并且它起作用了(内部存储不需要清单文件中的读写权限)。