这是由于Android 10引入了新的存储空间规则,需要适配文件访问权限。可以通过以下代码示例来解决:
//在运行时请求访问权限 private void requestStoragePermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION); } }
//检查是否有存储空间访问权限 private boolean hasStoragePermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; } return true; }
//在onCreate()方法中检查是否有存储空间访问权限并请求权限 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
if (!hasStoragePermission()) {
requestStoragePermission();
}
//其他代码
}
//在AndroidManifest.xml文件中添加以下flag
//在需要访问存储空间的Activity中添加以下代码 File file = new File(Environment.getExternalStorageDirectory(), "filename.txt");
//其他代码
上一篇:Android10-在Documents文件夹下创建一个SQlite数据库
下一篇:Android10/API29中公共文件夹的替代方案,以替代requestLegacyExternalStorage和MANAGE_EXTERNAL_STORAGE?