//读写文件权限申请 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:编写写入文件代码, }