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