我目前正在开发Android应用程序,在将手机的Android更新为CyanogenMod 13 for Oneplus One之前,一切正常。现在我的系统在应用程序应该收到BluetoothDevice.ACTION_FOUND
意图之前不久就崩溃了。
Manifest要求的权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我也在运行时请求位置权限! 启动发现:
registerReceiver(discoveredDevice, new IntentFilter(BluetoothDevice.ACTION_FOUND));
btAdapter.startDiscovery()
然后经过一段时间使用Android Monitor定位com.android.bluetooth
后,我可以看到以下内容:(希望我能解决所有重要的事情)(我希望收到的设备是HTC Wildfire,以防你想知道)
06-04 19:04:15.961 30465-30582/com.android.bluetooth D/bt_osi_alarm: reschedule_root_alarm alarm expiration too close for posix timers, switching to guns
06-04 19:04:17.242 30465-30477/com.android.bluetooth I/art: Background sticky concurrent mark sweep GC freed 15038(3MB) AllocSpace objects, 275(5MB) LOS objects, 39% free, 15MB/25MB, paused 5.926ms total 27.652ms
06-04 19:04:17.641 30465-30586/com.android.bluetooth W/bt_btm: btm_process_inq_results: BDA: 90-21-55-9a-58-65
06-04 19:04:17.641 30465-30586/com.android.bluetooth W/bt_btm: btm_process_inq_results: Dev class: 5a-02-0c
06-04 19:04:17.645 30465-30575/com.android.bluetooth D/BluetoothRemoteDevices: Remote Address is:90:21:55:9A:58:65
06-04 19:04:17.645 30465-30575/com.android.bluetooth D/BluetoothRemoteDevices: Remote Device name is: HTC Wildfire
06-04 19:04:17.646 30465-30575/com.android.bluetooth D/BluetoothRemoteDevices: Remote class is:5898764
06-04 19:04:17.646 30465-30575/com.android.bluetooth D/BluetoothRemoteDevices: deviceFoundCallback: Remote Address is:90:21:55:9A:58:65
06-04 19:04:20.197 30465-30465/com.android.bluetooth D/HeadsetPhoneState: sendDeviceStateChanged. mService=1 mSignal=3 mRoam=0 mBatteryCharge=5
06-04 19:04:20.197 30465-30597/com.android.bluetooth D/HeadsetStateMachine: Disconnected process message: 11, size: 0
06-04 19:05:52.680 30465-30485/com.android.bluetooth D/BtGatt.GattService: Binder is dead - unregistering client (5)!
06-04 19:05:52.681 30465-30485/com.android.bluetooth W/BinderNative: Uncaught exception from death notification
java.lang.SecurityException: Need BLUETOOTH_ADMIN permission: Neither user 1002 nor current process has android.permission.BLUETOOTH_ADMIN.
at android.app.ContextImpl.enforce(ContextImpl.java:1450)
at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1482)
at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:681)
at com.android.bluetooth.gatt.GattService.enforceAdminPermission(GattService.java:2148)
at com.android.bluetooth.gatt.GattService.stopMultiAdvertising(GattService.java:1500)
at com.android.bluetooth.gatt.GattService$ClientDeathRecipient.binderDied(GattService.java:255)
at android.os.BinderProxy.sendDeathNotice(Binder.java:558)
记住错误被抛出的时间(约一分半钟后)! 在此期间,手机被冻结,这意味着我无法做任何事情,除了关闭屏幕(甚至不能再打开)或重新启动。如果我等了那么久,手机会自动重启!
现在我的问题是这个问题是我的错还是CyanogenMod's。 谢谢你的帮助!
请参阅下面的解决方案,提出另一个问题!
答案 0 :(得分:1)
这很有压力.... 正如上面的评论中所提到的,我使用我兄弟的OnePlus One on Stock Cyanogen OS尝试了我的应用程序并且它有效。然后我重新安装了我的CyanogenMod和...问题仍然没有解决,这让我觉得操作系统的版本必须被破坏,但是在Cyanogen bugtracker没有其他人有这个问题。因此我决定完全擦拭手机(包括所有数据和所有内容!)并重新安装CyanogenMod。令人困惑的是现在一切正常! (我仍然摸不着头脑是否真的在两个安装程序中发生同样的腐败或者是其他导致这个问题的东西?) ------- 这是不是答案!
这实际上没有解决我的问题,因为我注意到以后再次绑定。经过几次重新安装后,我终于发现 Cyanogen的隐私保护导致了这个问题!为我的应用程序禁用它解决了它!有谁知道为什么Privacy Guard会这样做以及我能做些什么呢?
答案 1 :(得分:0)
当我使用蓝牙禁用位置精确度时,我遇到了同样的问题并设法解决了这个问题。当无法确定您的位置时,使用蓝牙提高定位精度会冻结手机。希望这可以帮助。感谢。