Java Can';即使设置了Android 11上的Android 10和requestLegacyExternalStorage,也无法访问/Android/数据
我正在尝试读取/写入Android 11上我的应用程序中的Java Can';即使设置了Android 11上的Android 10和requestLegacyExternalStorage,也无法访问/Android/数据,java,android,android-11,scoped-storage,Java,Android,Android 11,Scoped Storage,我正在尝试读取/写入Android 11上我的应用程序中的/Android/data和/Android/obb文件夹。我已经知道针对Android 11是不可能的,所以我在build.gradle中写了以下内容: compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "bla.bla.bla" minSdk
/Android/data
和/Android/obb
文件夹。我已经知道针对Android 11是不可能的,所以我在build.gradle中写了以下内容:
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "bla.bla.bla"
minSdkVersion 21
//noinspection OldTargetApi
targetSdkVersion 29
. . .
}
在AndroidManifist.xml中:
<application
. . .
android:requestLegacyExternalStorage="true">
. . .
<application/>
目前,Environment.isExternalStorageLegacy()
返回true
2021-05-10 23:20:32.737 31921-31921/com.fqxd.gftools D/Storage: Legacy true
但不幸的是,在获取文件列表时,我得到了java.lang.NullPointerException/Android/data
:
2021-05-10 23:20:32.739 31921-31921/com.fqxd.gftools D/AndroidRuntime: Shutting down VM
2021-05-10 23:20:32.740 31921-31921/com.fqxd.gftools E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.fqxd.gftools, PID: 31921
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fqxd.gftools/com.fqxd.gftools.MainActivity}: java.lang.NullPointerException: Attempt to get length of null array
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3431)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at com.fqxd.gftools.MainActivity.onCreate(MainActivity.java:53)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-05-10 23:20:33.268 31921-31937/com.fqxd.gftools W/System: A resource failed to call close.
这似乎阻止了对Android本身上的/Android/data
文件夹的访问
请告诉我如何解决此问题。在Android 10设备上,如果您在清单文件中请求旧版外部存储,您可以完全访问/storage/simulated/0/Android/data。根据:“在Android 11上,应用程序无法再访问外部存储中任何其他应用程序专用、特定于应用程序的目录中的文件。”这可能适用于任何版本的Android应用程序。对不起。这是我的错。它不是
环境。getExternalStorageDirectory()
。它是Environment.isExternalStorageLegacy()。
2021-05-10 23:20:32.739 31921-31921/com.fqxd.gftools D/AndroidRuntime: Shutting down VM
2021-05-10 23:20:32.740 31921-31921/com.fqxd.gftools E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.fqxd.gftools, PID: 31921
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fqxd.gftools/com.fqxd.gftools.MainActivity}: java.lang.NullPointerException: Attempt to get length of null array
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3431)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at com.fqxd.gftools.MainActivity.onCreate(MainActivity.java:53)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-05-10 23:20:33.268 31921-31937/com.fqxd.gftools W/System: A resource failed to call close.