从清单注册时未调用BroadcastReciever

时间:2018-01-11 10:21:56

标签: android broadcastreceiver receiver

这就是我的Manifest的样子:

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver
        android:name="ConnectivityActionReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGE" />
        </intent-filter>
    </receiver>
</application>

My Reciever在从活动注册时工作正常,但我想从清单注册,以便即使应用程序关闭也可以运行。有什么问题?为什么不起作用?

2 个答案:

答案 0 :(得分:3)

自Android Oreo以来,必须使用

在运行时注册接收器

context.registerReceiver(receiver, intentFilter);

接收隐含意图

您仍然可以接收显式意图和一些特殊的隐式操作,例如boot_completed或locale_changed

更多信息请参见以下链接

https://developer.android.com/about/versions/oreo/background.html#broadcasts

答案 1 :(得分:0)

尝试使用.ConnectivityActionReceiver代替ConnectivityActionReceiver。致电ConnectivityActionReceiver接收方因未找到课程而未注册

    <receiver
        android:name=".ConnectivityActionReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter android:priority="100">
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGE" />
        </intent-filter>
    </receiver>

请参阅此Question了解更多