標籤:
•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 @Override11 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 @Override34 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 }
92、App Permissions(許可權管理)執行個體