android14 存储权限报错
通过定位报错出现在这里,在网上找了很多办法,添加各种权限都不行


阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你遇到的问题可能是 Android 14 中的存储权限变化导致的。从 Android 11 开始,Android 系统对存储权限进行了修改,需要在 AndroidManifest.xml 文件中添加 requestLegacyExternalStorage 属性,并将其设置为 true。
例如:
<manifest ...>
<application ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
...
android:requestLegacyExternalStorage="true">
...
</application>
</application>
</manifest>
此外,你也可以使用 StorageManager 类来请求存储权限,例如:
StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
storageManager.requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
如果你使用的是单元测试,可以使用 InstrumentationRegistry 来请求存储权限,例如:
InstrumentationRegistry.getInstrumentation().getTargetContext().grantPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
如果你已经添加了这些权限,但仍然报错,可以尝试在 AndroidManifest.xml 文件中添加 android:exported 属性,并将其设置为 false,例如:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
这些解决方案可以帮助你解决 Android 14 中的存储权限报错问题。