Android API23(6.0)以上手机必须手动检测读取权限

楼主的手机是华为P9搭载android6.0,今天一个项目需要读写文件,明明文件目录下存放数据,读文件时一直报FileNotFoundException(没找到文件),写文件时一直报没有权限,然而我都加了。

查了一早上的资料,终于发现API 23(6.0)以上的手机需要手动去检测读取权限。并不会自动帮你检测,检测后可以确认是否允许应用可获得读写权限。若手机本身不允许该权限,就不会允许你读写数据,即便你在应用加了读写权限。

以下为手动检测读取权限代码:

 private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };
 public void myPermission() {
        int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    this,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
    }

只需要在要读写前,调用myPermission()方法。

在清单文件中添加权限:

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


参考文档:http://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android

你可能感兴趣的:(Android开发)