Java Can';即使设置了Android 11上的Android 10和requestLegacyExternalStorage,也无法访问/Android/数据

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 11上我的应用程序中的
/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.