gpt4 book ai didi

android - 如果我想使用蓝牙和 Target SDK 31 但我的最低 SDK 是 23,我需要在 Android 上获得什么权限?

转载 作者:行者123 更新时间:2023-12-04 23:57:19 25 4
gpt4 key购买 nike

问题:我想在 Android 上制作一个需要蓝牙功能的应用程序,但我不太确定需要哪些权限。我将退出此文档 https://developer.android.com/guide/topics/connectivity/bluetooth/permissions ,但措辞让我感到困惑。在我的应用程序 gradle 文件中,我的 targetSdkcompileSdk都设置为 31,即 Android 12。我的 minSdk设置为 23,但是这将是 Android 6.0。至少我知道我的应用程序需要能够扫描蓝牙设备、连接设备并与设备通信。我的应用程序不会从蓝牙扫描中获取位置。
对于最低限度,我需要的权限如下所示:


<manifest>
<!-- 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" />

<!-- Needed only if your app looks for Bluetooth devices.
If your app doesn't use Bluetooth scan results to derive physical
location information, you can strongly assert that your app
doesn't derive physical location. -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

<!-- Needed only if your app communicates with already-paired Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

...
</manifest>
这来自“目标 Android 12 或更高版本”下的链接网页,但我想知道我是否还需要遵守“目标 Android 11 或更低版本”部分,因为我的最低 Android SDK 是 Android 6.0。那么,我是否适合遵循 Android 12 目标指令或 Android 11 或更低目标指令?

最佳答案

您可以对 targetSdk 使用如下蓝牙权限设置为 31 和 minSdk到 23

    <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_CONNECT" />
<uses-permission
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"
tools:targetApi="s" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
然后在请求权限时,
    private String[] getRequiredPermissions() {
int targetSdkVersion = getApplicationInfo().targetSdkVersion;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && targetSdkVersion >= Build.VERSION_CODES.S) {
return new String[]{Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT};
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && targetSdkVersion >= Build.VERSION_CODES.Q) {
return new String[]{Manifest.permission.ACCESS_FINE_LOCATION};
} else return new String[]{Manifest.permission.ACCESS_COARSE_LOCATION};
}

关于android - 如果我想使用蓝牙和 Target SDK 31 但我的最低 SDK 是 23,我需要在 Android 上获得什么权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70439879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com