一、多權(quán)限申請
①在oncreat()方法中寫此方法
/**
* 6.0之后的動態(tài)申請權(quán)限
*/
checkRequiredPermission(LoginActivity.this);
②
/**
* 檢查權(quán)限
* @param activity
*/
private void checkRequiredPermission(final Activity activity) {
for (String permission : permissionsArray) {
if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
}
}
if (permissionsList.size()!=0){
ActivityCompat.requestPermissions(activity, permissionsList.toArray(new String[permissionsList.size()]), REQUEST_CODE_ASK_PERMISSIONS);
}
}
③實現(xiàn)回調(diào)
//動態(tài)申請權(quán)限的返回值
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(LoginActivity.this, "權(quán)限開啟" + permissions[i], Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LoginActivity.this, "權(quán)限禁止" + permissions[i], Toast.LENGTH_SHORT).show();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
二鹰溜、單權(quán)限申請(也可以直接用多權(quán)限申請的方法歼冰,在里面只寫一個權(quán)限):
①
第一步判斷時候授權(quán)。
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission = ContextCompat.checkSelfPermission(FoodActivity.this, Manifest.permission.CAMERA);
??????????????????????? if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
??????????????????????????? ActivityCompat.requestPermissions(FoodActivity.this,new String[]{Manifest.permission.CAMERA},222);
??????????????????????????? return;
??????????????????????? }else{
??????????????????????????? openCamra();//調(diào)用具體方法
??????????????????????? }
??????????????????? } else {
??????????????????????? openCamra();//調(diào)用具體方法
}
②寫回調(diào)
@Override
??? public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
??????? switch (requestCode) {
??????? //就像onActivityResult一樣這個地方就是判斷你是從哪來的褪那。
??????????? case 222:
??????????????? if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
??????????????????? // Permission Granted
??????????????????? openCamra();
??????????????? } else {
??????????????????? // Permission Denied
??????????????????? Toast.makeText(FoodActivity.this, "很遺憾你把相機(jī)權(quán)限禁用了幽纷。請務(wù)必開啟相機(jī)權(quán)限享受我們提供的服務(wù)吧。", Toast.LENGTH_SHORT)
??????????????????????????? .show();
??????????????? }
??????????????? break;
??????????? default:
??????????????? super.onRequestPermissionsResult(requestCode, permissions, grantResults);
??????? }
??? }