首页 > 解决方案 > 我无法在 android 10 手机上读取文件,但它可以在 android 7 上运行

问题描述

我已将所有必需的权限添加到清单中。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

我在我的活动中实现了以下内容:

if (ContextCompat.checkSelfPermission(LibraryActivity.this,
            Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(LibraryActivity.this,
                Manifest.permission.READ_EXTERNAL_STORAGE)) {
            ActivityCompat.requestPermissions(LibraryActivity.this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    MY_PERMISSION_REQUEST);
        } else {
            ActivityCompat.requestPermissions(LibraryActivity.this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    MY_PERMISSION_REQUEST);
        }
    } else {
        doStuff();
    }

我还实现了 onRequestPermissionsResult方法:

 @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == MY_PERMISSION_REQUEST) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            if (ContextCompat.checkSelfPermission(LibraryActivity.this,
                    Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();

                doStuff();
            }
        } else {
            Toast.makeText(this, "No permission granted", Toast.LENGTH_SHORT).show();
            finish();
        }
    }
}

我正在尝试使用文件从内部存储中播放音乐:

 MediaPlayer player = MediaPlayer.create(getContext(), Uri.fromFile(file));

android 7 file.canRead()返回true并且程序运行正常,但在android 10 file.canRead()返回false并且程序无法运行。

标签: androiduriandroid-mediaplayerandroid-sdk-toolsandroid-10.0

解决方案


推荐阅读