READ_EXTERNAL_STORAGE 是否可以根据情况在 Android 11 中提供不同程度的访问权限?
Is it possible for READ_EXTERNAL_STORAGE to give varying degrees of access, in Android 11 depending on the circumstance?
我有两个应用程序,它们都做不同的事情,但都针对 sdk 版本 30,并且在清单和运行时都请求 READ_EXTERNAL_STORAGE 权限。两者都是全新的并且以前没有安装在设备上。
使用三星 phone 运行 Android 11,然后我检查了两个应用程序的权限设置,发现了这个差异:
- App #1 的权限设置为“仅允许访问媒体”,这是我预期的,因为最近对存储访问进行了更改。但是,应用程序 #2 的权限设置为“允许访问以管理所有文件”。
- 当 App #1 提示用户读取权限时,系统显示的消息是“允许 ____ 访问您设备上的照片和媒体?”但是 App #2 提示“允许 ____ 访问您设备上的照片、文件 和媒体?”
这可能吗?应用程序 #2 绝对不会请求 MANAGE_EXTERNAL_STORAGE,它们都只请求有效的读取权限。但是应用程序#2 对系统文件管理器具有相同的权限,这显然是不对的。
会不会是 App #2 使用了一个使用 MANAGE_EXTERNAL_STORAGE 的库?
您可以在构建后比较两个应用程序的 AndroidManifest。它们并不总是与您自己为应用程序编写的 AndroidManifest 相同。
库可以定义自己所需的权限,并将合并到最终的 AndroidManifest
发现问题。应用程序 #2 是使用 androiddeployqt 构建的,由于某种原因覆盖了我指定的目标 sdk 版本,因此它实际上是一个 sdk 级别 28 应用程序。我强制它以正确的版本为目标,它现在按预期运行。
我有两个应用程序,它们都做不同的事情,但都针对 sdk 版本 30,并且在清单和运行时都请求 READ_EXTERNAL_STORAGE 权限。两者都是全新的并且以前没有安装在设备上。
使用三星 phone 运行 Android 11,然后我检查了两个应用程序的权限设置,发现了这个差异:
- App #1 的权限设置为“仅允许访问媒体”,这是我预期的,因为最近对存储访问进行了更改。但是,应用程序 #2 的权限设置为“允许访问以管理所有文件”。
- 当 App #1 提示用户读取权限时,系统显示的消息是“允许 ____ 访问您设备上的照片和媒体?”但是 App #2 提示“允许 ____ 访问您设备上的照片、文件 和媒体?”
这可能吗?应用程序 #2 绝对不会请求 MANAGE_EXTERNAL_STORAGE,它们都只请求有效的读取权限。但是应用程序#2 对系统文件管理器具有相同的权限,这显然是不对的。
会不会是 App #2 使用了一个使用 MANAGE_EXTERNAL_STORAGE 的库? 您可以在构建后比较两个应用程序的 AndroidManifest。它们并不总是与您自己为应用程序编写的 AndroidManifest 相同。 库可以定义自己所需的权限,并将合并到最终的 AndroidManifest
发现问题。应用程序 #2 是使用 androiddeployqt 构建的,由于某种原因覆盖了我指定的目标 sdk 版本,因此它实际上是一个 sdk 级别 28 应用程序。我强制它以正确的版本为目标,它现在按预期运行。