1 package com.rockchip.gpadc.demo;
2 
3 import android.Manifest;
4 import android.app.Activity;
5 import android.content.Intent;
6 import android.content.pm.PackageManager;
7 import android.os.Build;
8 import android.os.Bundle;
9 import android.support.annotation.NonNull;
10 import android.support.v4.app.ActivityCompat;
11 import android.support.v4.content.ContextCompat;
12 import android.util.Log;
13 import android.view.Gravity;
14 import android.widget.Toast;
15 
16 import java.lang.reflect.Method;
17 
18 public class MainActivity extends Activity
19         implements ActivityCompat.OnRequestPermissionsResultCallback {
20 
21     String[] permissions = new String[]{
22             Manifest.permission.CAMERA,
23             Manifest.permission.READ_EXTERNAL_STORAGE,
24             Manifest.permission.WRITE_EXTERNAL_STORAGE
25     };
26 
27 
28     @Override
onCreate(Bundle savedInstanceState)29     protected void onCreate(Bundle savedInstanceState) {
30         super.onCreate(savedInstanceState);
31         checkPermissions();
32     }
33 
34     /**
35      * 申请权限
36      */
checkPermissions()37     private void checkPermissions(){
38         //如果系统大于android6.0,进行动态权限申请
39         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
40             int i = ContextCompat.checkSelfPermission(this, permissions[0]);
41             int l = ContextCompat.checkSelfPermission(this, permissions[1]);
42             int m = ContextCompat.checkSelfPermission(this, permissions[2]);
43             if (i != PackageManager.PERMISSION_GRANTED ||
44                     l != PackageManager.PERMISSION_GRANTED ||
45                     m != PackageManager.PERMISSION_GRANTED) {
46                 // 如果有权限没有授予,就去提示用户请求
47                 startRequestPermission();
48             } else {
49                 startCamera();
50             }
51 
52         } else {
53             startCamera();
54         }
55 
56     }
57 
58     /**
59      * 通过权限列表,提示用户赋予或禁止当前还未拥有的权限
60      */
startRequestPermission()61     private void startRequestPermission() {
62         ActivityCompat.requestPermissions(this, permissions, 321);
63     }
64     @Override
onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)65     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
66         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
67         Log.d("yolo", "onRequestPermissionsResult:"+requestCode);
68         if (requestCode == 321) {
69             Log.d("yolo", "onRequestPermissionsResult");
70             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
71                 if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
72                     //如果没有获取权限,那么可以提示用户去设置界面--->应用权限开启权限
73                     Toast toast = Toast.makeText(this, "请从设置界面开启权限", Toast.LENGTH_LONG);
74                     toast.setGravity(Gravity.CENTER, 0, 0);
75                     toast.show();
76                     finish();
77                 } else {
78                     startCamera();
79                 }
80             }
81         }
82     }
83 
startCamera()84     private void startCamera() {
85         Intent intent = new Intent(this, CameraPreviewActivity.class);
86         startActivity(intent);
87     }
88 }
89