gpt4 book ai didi

android - 调用 BluetoothAdapter.getDefaultAdapter 时出现 SecurityException

转载 作者:行者123 更新时间:2023-11-29 00:09:47 25 4
gpt4 key购买 nike

在我的应用程序的 onCreate() 中,我调用了 BluetoothAdapter.getAddress()。运行此应用程序的数百台设备中的一台会产生 java.lang.SecurityException:

java.lang.RuntimeException: Unable to start activity ComponentInfo{xx.yyy.myapp/xx.yyy.myapp.RecActivity}: java.lang.SecurityException: Need BLUETOOTH ADMIN permission: Neither user 10095 nor current process has android.permission.BLUETOOTH_ADMIN. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5039) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.SecurityException: Need BLUETOOTH ADMIN permission: Neither user 10095 nor current process has android.permission.BLUETOOTH_ADMIN. at android.os.Parcel.readException(Parcel.java:1425) at android.os.Parcel.readException(Parcel.java:1379) at android.bluetooth.IBluetoothManager$Stub$Proxy.getAddress(IBluetoothManager.java:295) at android.bluetooth.BluetoothAdapter.getAddress(BluetoothAdapter.java:576) at xx.yyy.myapp.RecActivity.onCreate(Unknown Source) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) ... 11 more

由于我无法在该设备上进行调试,所以我想请问以下解决方案是否可行,或者是否有更好的方法来处理该问题(这是小于 JELLY_BEAN_MR2 的分支)?

BluetoothAdapter bta = BluetoothAdapter.getDefaultAdapter();
try {
macAddress = ( bta != null ) ? bta.getAddress() : "";
} catch ( Exception e ) {
macAddress = "";
}

此外,我想知道该设备上的 Android 版本是否存在错误,因为在我看来 BluetoothAdapter.java 中的 getAddress()不需要 android.permission.BLUETOOTH_ADMIN

或者使用此设备的用户是否有可能使用特定的 root 工具来锁定我的应用程序的蓝牙访问?这可能是异常的原因?

或者问题的原因可能是什么?

最佳答案

it's bad practice to use catch(Exception e) , 使用

} catch(SecurityException e){

防止崩溃。

(现在作为答案而不是评论。)

关于android - 调用 BluetoothAdapter.getDefaultAdapter 时出现 SecurityException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138606/

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