当我在AndroidManifest中声明隐式广播接收器时,没有调用接收器。

<receiver
    android:name=".BluetoothConnectionReceiver_"
    android:enabled="true"
    android:exported="true"

    android:permission="android.permission.BLUETOOTH,
    android.permission.BLUETOOTH_ADMIN">
    <intent-filter>
            <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
            <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
    </intent-filter>
</receiver>


我了解在奥利奥(Oreo)中,某些隐式广播受到限制。但是在文档中,https://developer.android.com/guide/components/broadcast-exceptions,ACL_CONNECTED和ACL_DISCONNECTED不在其中。

最佳答案

声明<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 在您的AndroidManifest中,您必须签入运行时以验证是否已为> = Lollipop版本授予权限。

使用此代码:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
    } else {
        //Permission is already granted
    }


使用ContextCompatActivityCompat类,您无需检查正在运行的SDK / OS版本是否为> = Lollipop。如果是版本ContextCompat.checkSelfPermission()将返回true。

07-27 22:52