[英]Runtime Bluetooth permission not showing in jetpack compose
我想请求运行时权限。 但它只显示一个请求。 有人可以指导我如何在 jetpack compose 中实现这一点。 我正在使用 compose 1.1.1
并使用0.23.1
版本的伴奏权限。 我根据这个官方文档在我的清单中声明了许可..
在清单.xml
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<uses-permission
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"
tools:targetApi="s" />
<!-- Needed only if your app makes the device discoverable to Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<!-- Needed only if your app communicates with already-paired Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-feature android:name="android.hardware.bluetooth" android:required="true"/>
我试过这段代码
蓝牙请求活动.kt
class BluetoothRequestActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Theme {
val multiplePermissionsState = rememberMultiplePermissionsState(
listOf(
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT,
Manifest.permission.BLUETOOTH_ADVERTISE,
Manifest.permission.BLUETOOTH_ADMIN
)
)
AppBarScaffold(abc = true) {
BluetoothRequest(multiplePermissionsState, onCancelClick = {
finish()
})
}
}
}
}
}
另一个组成 function
蓝牙请求
@Composable
fun BluetoothRequest(
multiplePermissionsState: MultiplePermissionsState,
onCancelClick: () -> Unit
) {
Column {
BluetoothRequestItem()
BluetoothRequestContinue(multiplePermissionsState)
BluetoothRequestCancel(onCancelClick)
}
}
蓝牙请求继续
@Composable
fun BluetoothRequestContinue(multiplePermissionsState: MultiplePermissionsState) {
MaterialButton(
text = stringResource(R.string.continue_text),
spacerHeight = dimensionResource(10.dp)
) {
multiplePermissionsState.launchMultiplePermissionRequest()
}
}
我只得到这样的单一请求权限
无论您提到什么说您想要这些权限,都在显示的对话框中逐字逐句地涵盖了。
您说“扫描、配对和数据传输”,对话框显示查找(扫描)、连接到(配对和数据传输),并找到附近设备的相关 position(额外功能)。 尝试从数组中删除一些权限,看看对话框文本是如何变化的。 用户不应该知道底层操作系统的技术细节(管理员、广告)。 这就是为什么它被抽象成一个简单的文本对话框,向用户清楚地说明一切。 你的代码很好,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.