Java 在存储中保存文本的权限android不工作
我已经为用户构建了一个示例应用程序,用于编写一些文本并将其保存在内部存储器中 格式为TXT或pdf。我已经在android Kitkat sdk 19上试过了,它运行得很好,但当我在最新的android 9上试过时,我被拒绝了,无法将文本保存在内部存储中 编辑:我想知道是否必须手动创建我的文件文件夹 我错过了什么 AndroidManifestJava 在存储中保存文本的权限android不工作,java,android,storage,android-permissions,Java,Android,Storage,Android Permissions,我已经为用户构建了一个示例应用程序,用于编写一些文本并将其保存在内部存储器中 格式为TXT或pdf。我已经在android Kitkat sdk 19上试过了,它运行得很好,但当我在最新的android 9上试过时,我被拒绝了,无法将文本保存在内部存储中 编辑:我想知道是否必须手动创建我的文件文件夹 我错过了什么 AndroidManifest <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在
main活动中
您应该检查是否授予了权限,然后使用=代码>操作员
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {}
这条线应该是-
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){}
正如我的建议和答案
这只是一个解决办法,但它是有效的
我补充说
android:requestLegacyExternalStorage="true"
到AndroidManifest.xml
文件中的我的
元素
然后换了线
File path = Environment.getExternalStorageDirectory();
到
您的权限对话框是否在android 9中弹出?请检查是否有任何例外,请参阅此StackOverflow。我希望你能有所了解,斯塔克崔斯?例外?请参考此链接了解更多信息。如果这是一种很好的方法并且StackTrace没有显示任何错误,我将尝试这个答案。您可以通过在AndroidManifest.xml内部的应用程序标记上设置android:requestLegacyExternalStorage=“true”来使用旧存储。然而,你应该尽快在你的应用程序中实现作用域存储,因为在Android 11上,谷歌表示无论targetSdkVersion如何,所有应用程序都需要它android:requestLegacyExternalStorage=“true”
这只对android 10有意义。并且仅当您希望继续使用getExternalStorageDirectory()时。不要同时改变两件事,因为你不知道是哪一件做的。你链接到的答案是针对Android 10的。
File path = Environment.getExternalStorageDirectory();
File path = new File(getExternalFilesDir(null).getAbsolutePath());