关于安卓的一个小问题2

作者你好,在从零基础到APP上线这本书中第542页智能小车那里,我把所有代码写好了之后,出现了一个异常

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothDevice android.bluetooth.BluetoothAdapter.getRemoteDevice(java.lang.String)' on a null object reference



导致无法打开其本身Activity

还有一个问题是

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`

这个又该怎么解决呢?
谢谢!

检查下有没有在​​​AndroidManifest.xml​​文件中注册权限,没有的话先在​AndroidManifest.xml​​文件中注册权限:


<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" ></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH" ></uses-permission>

下面的问题和上面的是一样的,因为没有权限,且没有在checkPermission中抛出异常,可以:


public void checkPermission() {
  try {
    // 具体操作
  } catch (SecurityException ex ) {
    System.out.println("权限异常" + ex.getMessage());
  }
}

第一个问题需要看下app日志是哪一行代码抛出的异常,看错误是出现了空指针。
第二个问题要检查AndroidManifest.xml是否声明了必需的权限,包括蓝牙权限和定位权限,注意android12有增加新的蓝牙权限,具体看书上说明。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^