一、AndroidMainifest.xml權限:java
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
二、在代碼中動態註冊:android
/* 校驗藍牙權限 */ private void checkBluetoothPermission() { if (Build.VERSION.SDK_INT >= 23) { //校驗是否已具備模糊定位權限 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_ENABLE_BT ); }else{
//權限已打開 startScan(); } }else{
//小於23版本直接使用 startScan(); } }
三、接收請求權限的返回:ide
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == REQUEST_ENABLE_BT){ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//藍牙權限開啓成功 startScan(); }else{ Toast.makeText(MainActivity.this, "藍牙權限未開啓,請設置", Toast.LENGTH_SHORT).show(); } } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
檢查藍牙是否開啓:ui
public boolean checkBlueEnable(){ if (mBluetoothAdapter.isEnabled()){ return true; }else { Toast.makeText(this,"藍牙未打開",Toast.LENGTH_SHORT).show(); return false; } }