•Manifest权限声明
•Permission Groups-权限组
•权限的区分-安装时授权于运行时授权
•撤销权限
•检查、请求权限
•在应用中如何合理的处理权限请求逻辑
在AndroidManifest.xml中配置权限。
<!-- 照相机权限 -->
<uses-permission android:name="android.permission.CAMERA"/>
public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); findViewById(R.id.txt_getcamera).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getCamera();
}
});
} // 获取相机的方法
private void getCamera() {
// MNC 代表的就是 Android M 的版本号。
if (Build.VERSION.CODENAME.equals("MNC")) {
// 如果拥有权限的话
if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
opCamera();
} else { // 如果没有权限,请求 照相机的 权限。
requestPermissions(new String[]{Manifest.permission.CAMERA}, 1);
}
} else {
opCamera();
}
} // 选择相应的权限,系统会弹出一个对话框让用户选择权限,权限的结果返回,需要此回掉的方法。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "已获取权限", Toast.LENGTH_SHORT).show();
opCamera();
} else {
Toast.makeText(MainActivity.this, "您拒绝了我", Toast.LENGTH_SHORT).show();
}
} private void opCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1009);
} }