android读写文件权限管理

//读写文件权限申请
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    // 判断是否有这个权限,是返回PackageManager.PERMISSION_GRANTED,否则是PERMISSION_DENIED
    // 这里我们要给应用授权所以是!= PackageManager.PERMISSION_GRANTED
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        Log.i(TAG, "222222222222222222222222");
        // 如果应用之前请求过此权限但用户拒绝了请求,且没有选择"不再提醒"选项 (后显示对话框解释为啥要这个权限),此方法将返回 true。
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            Log.i(TAG, "3333333333333333333333333");
        } else {
            Log.i(TAG, "88888888888888888888888");
            // requestPermissions以标准对话框形式请求权限。123是识别码(任意设置的整型),用来识别权限。应用无法配置或更改此对话框。
            //当应用请求权限时,系统将向用户显示一个对话框。当用户响应时,系统将调用应用的 onRequestPermissionsResult() 方法,向其传递用户响应。您的应用必须替换该方法,以了解是否已获得相应权限。回调会将您传递的相同请求代码传递给 requestPermissions()。
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    100);
        }
    }
    Log.i(TAG, "5555555555555555555555555");
} else {
    Log.i(TAG, "6666666666666666666666666");
}
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 100: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //这里的两句语句是我写的创建文件的语句,在授权成功是时候会调用这里的语句。
                // permission was granted, yay! Do the
                // contacts-related task you need to do.
            } else {
                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }
        // other 'case' lines to check for other
        // permissions this app might request
    }
}

//下面代码是在手机系统根目录上创建一个名为Camera的文件夹

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Camera/";

具体代码:
private void screenShot() {
    String picPath = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Camera/";
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        } else {
          
        }
        picPath = path + System.currentTimeMillis() + ".png";
    }
    Log.i(TAG, "截图路径 : " + picPath);
  //TODO:编写写入文件代码,
}

 

 

你可能感兴趣的:(android)