•Manifest权限声明
•Permission Groups-权限组
•权限的区分-安装时授权于运行时授权
•撤销权限
•检查、请求权限
•在应用中如何合理的处理权限请求逻辑
在AndroidManifest.xml中配置权限。
<!-- 照相机权限 --> <uses-permission android:name="android.permission.CAMERA"/>
1 public class MainActivity extends Activity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 9 findViewById(R.id.txt_getcamera).setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View view) { 12 getCamera(); 13 } 14 }); 15 } 16 17 // 获取相机的方法 18 private void getCamera() { 19 // MNC 代表的就是 Android M 的版本号。 20 if (Build.VERSION.CODENAME.equals("MNC")) { 21 // 如果拥有权限的话 22 if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { 23 opCamera(); 24 } else { // 如果没有权限,请求 照相机的 权限。 25 requestPermissions(new String[]{Manifest.permission.CAMERA}, 1); 26 } 27 } else { 28 opCamera(); 29 } 30 } 31 32 // 选择相应的权限,系统会弹出一个对话框让用户选择权限,权限的结果返回,需要此回掉的方法。 33 @Override 34 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 35 super.onRequestPermissionsResult(requestCode, permissions, grantResults); 36 37 if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 38 Toast.makeText(MainActivity.this, "已获取权限", Toast.LENGTH_SHORT).show(); 39 opCamera(); 40 } else { 41 Toast.makeText(MainActivity.this, "您拒绝了我", Toast.LENGTH_SHORT).show(); 42 } 43 } 44 45 private void opCamera() { 46 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 47 startActivityForResult(intent, 1009); 48 } 49 50 }
时间: 2024-10-08 23:11:19