这就是我的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在从活动注册时工作正常,但我想从清单注册,以便即使应用程序关闭也可以运行。有什么问题?为什么不起作用?
答案 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了解更多