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 fun checkPermissions(): Boolean {
2 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
3 val permissions = arrayOf<String>(
4 Manifest.permission.GET_ACCOUNTS,
5 Manifest.permission.ACCOUNT_MANAGER,
6 Manifest.permission.WRITE_SYNC_SETTINGS,
7 )
8 val BLE_PERMISSION = 8902
9 var permissionCheck = 0
10 for (permission in permissions) {
11 permissionCheck += checkSelfPermission(permission)
12 }
13 if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
14 requestPermissions(permissions, BLE_PERMISSION) //requestPermissions是Activity中的api
15 return false
16 }
17 }
18 return true
19 }
20
21 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String?>, grantResults: IntArray) {
22 super.onRequestPermissionsResult(requestCode, permissions, grantResults)
23 val BLE_PERMISSION = 8902
24 if (requestCode == BLE_PERMISSION) {
25 //boolean ret = true;
26 //for (int result : grantResults){//检查所有权限
27 // if (result != PackageManager.PERMISSION_GRANTED){
28 // ret = false;
29 // break;
30 // }
31 //}
32 if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //权限申请成功。
33 //成功...
34 } else {
35 Log.e("MainActivity", "onRequestPermissionsResult: result = false")
36 }
37 }
38 }
3.在Fragment中申请
3.1申请多权限
1 private fun checkPermissions(): Boolean {
2
3 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
4 val permissions = arrayOf(
5 Manifest.permission.WRITE_EXTERNAL_STORAGE
6 )
7 val PERMISSION_CODE = 8902
8
9 var permissionCheck = 0
10
11 if (context == null ) return false
12
13 for (permission in permissions) {
14 var check : Int? = context?.checkSelfPermission(permission)
15 if (check != null) {
16 permissionCheck += check
17 }else{
18 return false
19 }
20 }
21 if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
22 requestPermissions(permissions, PERMISSION_CODE)
23 return false
24 }
25 }
26 return true
27 }
28
29 @RequiresApi(api = Build.VERSION_CODES.M)
30 override fun onRequestPermissionsResult(
31 requestCode: Int,
32 permissions: Array<String>,
33 grantResults: IntArray
34 ) {
35 super.onRequestPermissionsResult(requestCode, permissions, grantResults)
36 val PERMISSION_CODE = 8902
37
38 if (requestCode == PERMISSION_CODE) {
39 //var ret = 0
40 //for (result in grantResults) {//检查所有权限
41 // ret += result
42 // if (result != PackageManager.PERMISSION_GRANTED) {
43 // break
44 // }
45 //}
46 if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //权限申请成功。
47 parseJson("test.json")
48 }
49 }
50 }
3.2 申请单个权限
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 }