试过了AndroidManifest加入
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 外存储读权限,构建语法需要用到此权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 配置权限,用来记录应用配置信息 -->
这俩 完事activity加入
if (Build.VERSION.SDK_INT >= 23) { int REQUEST_CODE_PERMISSION_STORAGE = 100; String[] permissions = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; for (String str : permissions) { if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) { this.requestPermissions(permissions, REQUEST_CODE_PERMISSION_STORAGE); } } }
实在不行再加一个
<provider android:name="androidx.core.content.FileProvider" android:authorities="set_your_package_name" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
这些我都试过了都不好使 麻了
最后还是在配置文件里面加上这行
<!--安卓11还需要另外添加下面这条权限--> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
同时在activity里面加上
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if(!Environment.isExternalStorageManager()){ startActivity(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)); } }
就能使用
try (RandomAccessFile raf = new RandomAccessFile(str, "r"))读取文件了
芜湖!