动态的广播实例化过滤器,并注册广播,定义Intent对象,注意action一定要一样:
设置广播接收者:
多次调试发现无法触发动态广播,log消息不显示,在查找资料以后以为是权限申请的问题,需要定位才可以实现,添加权限如下:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
然后添加下面的动态申请代码:
if (Build.VERSION.SDK_INT >= 6.0) { ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_REQUEST_CONSTANT); }
然后添加下面的代码:
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSION_REQUEST_CONSTANT: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //permission granted! } return; } } }
还是无法接受动态广播,在查找之后,修改了接受者的代码和注册的代码顺序,让接受者的代码在注册代码之前,终于成功解决。
蓝牙的动态广播做完,后面还有蓝牙的扫面显示和匹配连接,课设写的我好痛苦啊啊啊啊啊啊啊啊啊啊啊啊