【问题标题】:READ_EXTERNAL_STORAGE Problem with android 12READ_EXTERNAL_STORAGE android 12 的问题
【发布时间】:2022-01-12 12:06:49
【问题描述】:

我有一个应用程序可以读取 pdf 文件,直到我在我的设备上安装了 android 12。

清单:

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:requestLegacyExternalStorage="true">
...
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:remove="android:maxSdkVersion" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:remove="android:maxSdkVersion"
            tools:ignore="ScopedStorage" />

权限:

private static final int REQUEST_PERMISSIONS = 20;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.permissionactivity_main);


            // Permission einholen
            PermissionActivity.super.requestAppPermissions(new
                            String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE}, R.string
                            .runtime_permissions_txt
                    , REQUEST_PERMISSIONS);

        }

        @Override
        public void onPermissionsGranted(int requestCode) {
            startActivity(new Intent(PermissionActivity.this, MainActivity.class));
            finish();

        }

还有代码:

File myFile2 = new File(Environment.getExternalStorageDirectory().getPath()+"/FploData/");
       
        if (!myFile2.exists()) {myFile2.mkdir();} // works with Android 12
       
        File lister = myFile2.getAbsoluteFile();
        Log.e("file2: ", String.valueOf(lister));

        File[] files = myFile2.listFiles();
        Log.e("file length: ", String.valueOf(files.length));

files.length 返回 0 但目录不为空。代码运行良好,直到我将我的设备从 Android 11 更新到 12。我认为权限有问题。 有人可以帮忙吗?

【问题讨论】:

    标签: java file directory android-external-storage android-12


    【解决方案1】:

    requestLegacyExternalStorage 不适用于针对 sdk 30 的新安装。

    Android 10 设备 无论目标 sdk 如何,requestLegacyExternalStorage 都将继续工作。

    Android 11 设备 针对 sdk 29 的新安装:尊重 requestLegacyExternalStorage 值。

    Android 12 设备 针对 sdk 30 的新安装:requestLegacyExternalStorage 始终为 false。

    在 2021 年 8 月之后,Play 商店需要目标 sdk 30,因此此时您几乎不得不实施范围存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-14
      • 2015-12-02
      • 2022-12-05
      • 2022-10-06
      • 2022-08-04
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多