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