Android6.0拍照,讀取照片信息所用到的權限

在拍照,讀取相冊信息時應該加入權限判斷,不然在沒有相應權限時會直接出錯的. 相關代碼以下:android

//判斷是否有讀寫手機存儲的權限
		if (ContextCompat.checkSelfPermission(this,
				Manifest.permission.WRITE_EXTERNAL_STORAGE)
				!= PackageManager.PERMISSION_GRANTED) {
			//權限尚未授予,須要在這裏寫申請權限的代碼
				/*
				第二個參數是一個字符串數組,裏面是你須要申請的權限。既然是一個數組,那麼就說明你一次能夠申請多個權限。
				最後一個參數是一個整型常量,用於標誌你此次申請的權限,該常量在onRequestPermissionsResult(…)方法中會用到。
				 */
			ActivityCompat.requestPermissions(this,
					new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Util.MY_PERMISSIONS_REQUEST_WRITE);
		} else {
			//若是有應該進行怎樣的操做
		}

而後在在onRequestPermissionsResult(…)方法中進行處理數組

@Override
	public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
		super.onRequestPermissionsResult(requestCode, permissions, grantResults);

		//判斷是拍照的權限
		if (requestCode == Util.MY_PERMISSIONS_REQUEST_CALL_PHOTO) {
			if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
			{
				//當容許時進行的操做
			} else {
                                //仍是不容許時能夠跳轉到應用的權限管理界面修改權限
				//跳轉到該應用的設置界面,讓用戶手動受權
                        Intent localIntent = new Intent();
                        localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        if (Build.VERSION.SDK_INT >= 9) {
                            localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                            localIntent.setData(Uri.fromParts("package", getPackageName(), null));
                        } else if (Build.VERSION.SDK_INT <= 8) {
                            localIntent.setAction(Intent.ACTION_VIEW);
                            localIntent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
                            localIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
                        }
                        startActivity(localIntent);
			}
		}
		//判斷是讀寫手機存儲的權限
		if (requestCode == Util.MY_PERMISSIONS_REQUEST_WRITE) {
			if (grantResults[0] != PackageManager.PERMISSION_GRANTED)
			{
				//跳轉到該應用的設置界面,讓用戶手動受權
                        Intent localIntent = new Intent();
                        localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        if (Build.VERSION.SDK_INT >= 9) {
                            localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                            localIntent.setData(Uri.fromParts("package", getPackageName(), null));
                        } else if (Build.VERSION.SDK_INT <= 8) {
                            localIntent.setAction(Intent.ACTION_VIEW);
                            localIntent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
                            localIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
                        }
                        startActivity(localIntent);
			} else {
				//容許時應該進行的操做
			}
		}
	}

同理拍照的權限判斷也是同樣的ide

//判斷是否有拍照的權限
		if (ContextCompat.checkSelfPermission(this,
				Manifest.permission.CAMERA)
				!= PackageManager.PERMISSION_GRANTED) {
			//權限尚未授予,須要在這裏寫申請權限的代碼
				/*
				第二個參數是一個字符串數組,裏面是你須要申請的權限。既然是一個數組,那麼就說明你一次能夠申請多個權限。
				最後一個參數是一個整型常量,用於標誌你此次申請的權限,該常量在onRequestPermissionsResult(…)方法中會用到。
				 */
			ActivityCompat.requestPermissions(this,
					new String[]{Manifest.permission.CAMERA}, Util.MY_PERMISSIONS_REQUEST_WRITE);
		} else {
			//若是權限容許應當進行的下一步操做
		}
相關文章
相關標籤/搜索