1.必須在Manifest文件中靜態(tài)注冊
2.動態(tài)申請
if (ContextCompat.checkSelfPermission(this , Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED){
// 當?shù)谝淮蜗蛴脩羯暾垯嘞薇痪芙^了,這個才會返回true 用于向用戶解釋為什么需要這個權限
if(ActivityCompat.shouldShowRequestPermissionRationale(this , Manifest.permission.CAMERA)) {
new AlertDialog.Builder(this).setMessage(R.string.granted_camera).setPositiveButton("確定", new DialogInterface.OnClickListener()
{ @Override public void onClick(DialogInterface dialog, int which) { // 申請相機權限 ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.CAMERA} , CAMERA_REQUEST_CODE); } }).show();
} else { ActivityCompat.requestPermissions(this ,
new String[]{Manifest.permission.CAMERA} , ````CAMERA_REQUEST_CODE); } } else { mTextView.setTextColor(Color.GREEN); mTextView.setText("相機權限已經(jīng)獲取"); } }}
3.獲取權限回調(diào)
@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == CAMERA_REQUEST_CODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { mTextView.setTextColor(Color.GREEN); mTextView.setText(R.string.granted_camera); } else { if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { Toast.makeText(this, R.string.deny_camera , Toast.LENGTH_SHORT).show(); } } }}