はじめに
社内で動かしていたちょっとした端末がAndroid5.0から6.0にいつのまにかUpdateされていて、
その上で動かしていた自作アプリがBLEの信号を受信できなくなっていたのをなおした時のメモです。
症状
-
Android5.0の時は問題なくBLE周りの機能が使えていた。
-
Android6.0にUpdateされたら動かなくなっていた
-
下記のようなログが出ている
BroadcastQueue﹕ Permission Denial: receiving Intent { act=android.bluetooth.device.action.FOUND
対処法
この辺に詳しく書いてあるようです。
Is Your Beacon App Ready for Android 6.0?
私の場合は、 AndroidManifest.xml
に
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
を追加したらなおりました。
全体のPermissionは以下のようになっています。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp" >
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> ← この行を追加した
<application ...
※ 注意:BLEのみ必要なら余計なPermisionもあるかもしれません・・・
さいごに
それにしてもいつの間にかUpdateされるとは、、、