一、藍(lán)牙開發(fā)之-權(quán)限申請(qǐng), 直接上代碼
第一步、在 AndroidManifest.xml 中 聲明下需要的權(quán)限
<!--聲明后臺(tái)定位權(quán)限-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" /> <!-- 申明該權(quán)限不適用于安卓12及以上 -->
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" /> <!-- 申明該權(quán)限不適用于安卓12及以上 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="true" /> <!-- 申明手機(jī)需要支持藍(lán)牙 -->
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" /> <!-- 申明手機(jī)需要支持BLE -->
第二步、在業(yè)務(wù)流程中 去申請(qǐng)權(quán)限 這里使用的是 EasyPermissions 權(quán)限申請(qǐng)
//Android 12 需要申請(qǐng)的權(quán)限
var perms12 = arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT
)
//檢測(cè)權(quán)限的方法
private fun checkPermissions() {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.S|| Build.VERSION.SDK_INT == Build.VERSION_CODES.S_V2) {
?????//Android 12 權(quán)限判斷???
if (!EasyPermissions.hasPermissions(
requireContext(),
*perms12
)
) {
EasyPermissions.requestPermissions(
requireActivity(),
"此功能需要位置信息權(quán)限與附近的設(shè)備權(quán)限,請(qǐng)?jiān)O(shè)置",
1001,
*perms12
)
} else {
????????????//去掃描搜索藍(lán)牙
goScanBle()
}
}else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
if (!EasyPermissions.hasPermissions(
requireContext(),
Manifest.permission.ACCESS_FINE_LOCATION,
)
) {
EasyPermissions.requestPermissions(
requireActivity(),
"此功能需要位置信息權(quán)限與附近的設(shè)備權(quán)限,請(qǐng)?jiān)O(shè)置",
1001,
Manifest.permission.ACCESS_FINE_LOCATION,
)
} else {
?? //去掃描搜索藍(lán)牙
goScanBle()
}
}
}
//權(quán)限通過(guò)后 再去檢測(cè)下
/**
* 權(quán)限通過(guò)
*/
override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.S||Build.VERSION.SDK_INT == Build.VERSION_CODES.S_V2) {
if (EasyPermissions.hasPermissions(
requireContext(),
*perms12
)
) {
goScanBle()
} else {
Log.i("權(quán)限","-----onPermissionsGranted-------")
}
}else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
if (EasyPermissions.hasPermissions(
requireContext(),
Manifest.permission.ACCESS_FINE_LOCATION,
)
) {
goScanBle()
} else {
Log.i("權(quán)限","-----onPermissionsGranted-------")
}
}
}
第三步、權(quán)限拿到了,就掃描、連接、進(jìn)行通信 吧 附上流程圖文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-850254.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-850254.html
到了這里,關(guān)于藍(lán)牙開發(fā)之-Android12及以下權(quán)限申請(qǐng) 及藍(lán)牙詳細(xì)流程圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!