92、App Permissions(权限管理)实例

•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 }
原文地址:https://www.cnblogs.com/androidsj/p/5470344.html