Android 申请权限示例

mac2022-07-01  5

1.在Mainifest.xml中添加

1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:dist="http://schemas.android.com/apk/distribution" 4 package="com.example.ble"> 5 6 <dist:module dist:instant="true" /> 7 8 <uses-permission android:name="android.permission.BLUETOOTH"/> 9 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 10 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 11 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 12 13 <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> 14 15 <application 16 android:allowBackup="true" 17 android:icon="@mipmap/bluetooth" 18 android:label="@string/app_name" 19 android:roundIcon="@mipmap/ic_launcher_round" 20 android:supportsRtl="true" 21 android:theme="@style/AppTheme"> 22 <activity android:name=".MainActivity"> 23 <intent-filter> 24 <action android:name="android.intent.action.MAIN" /> 25 26 <category android:name="android.intent.category.LAUNCHER" /> 27 </intent-filter> 28 </activity> 29 </application> 30 31 </manifest>

2.在activity中申请

1   private boolean checkPermissions(){ 2 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 3 4 String[] permissions = { 5 Manifest.permission.BLUETOOTH, 6 Manifest.permission.BLUETOOTH_ADMIN, 7 Manifest.permission.ACCESS_COARSE_LOCATION, 8 Manifest.permission.ACCESS_FINE_LOCATION, 9 }; 10 11 final int BLE_PERMISSION = 8902; 12 13 int permissionCheck = 0 ; 14 15 for (String permission : permissions){ 16 permissionCheck += checkSelfPermission(permission); 17 } 18 if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 19 requestPermissions(permissions,BLE_PERMISSION);//requestPermissions是Activity中的api 20 return false; 21 } 22 } 23 return true; 24 } 25 @RequiresApi(api = Build.VERSION_CODES.M) 26 @Override 27 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 28 super.onRequestPermissionsResult(requestCode, permissions, grantResults); 29 final int BLE_PERMISSION = 8902; 30 31 if (requestCode == BLE_PERMISSION && grantResults != null) { 32 boolean ret = true; 33 for (int result : grantResults){//检查所有权限 34 if (result != PackageManager.PERMISSION_GRANTED){ 35 ret = false; 36 break; 37 } 38 } 39 if (ret) { //所有权限申请成功。 40 setupBLE(); 41 } else { 42 ret = shouldShowRequestPermissionRationale(permissions[0]); 43 Log.e("MainActivity", "onRequestPermissionsResult: result = " + ret ); 44 } 45 } 46 }

 3.在Fragment中申请

1 @OnClick(R.id.btn_analy_import) 2 public void onImportClicked(View view){ 3 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 4 final int permissionID = 63358; 5 int write = getActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); 6 if (write != PackageManager.PERMISSION_GRANTED) { 7 String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; 8 requestPermissions(permissions, permissionID);//fragment基类中的函数 9 }else{ 10 //业务函数 11 } 12 } 13 } 14 15 @Override 16 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 17 super.onRequestPermissionsResult(requestCode, permissions, grantResults); 18 Log.e("CompareFrgmt", "onRequestPermissionsResult: requestCode = " + requestCode ); 19 final int permissionID = 63358; 20 if (requestCode == permissionID && grantResults != null) { 21 if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 22 //业务函数 23 } else { 24 Snackbar.make(operatorPager, R.string.err_permission_denied,Snackbar.LENGTH_LONG).show(); 25 } 26 } 27 }

 

转载于:https://www.cnblogs.com/sjjg/p/4795696.html

最新回复(0)