我正在构建一个在建立wifi连接时发送通知的应用程序。由于我使用的是android 9,因此无法在AndroidManifest.xml中设置意图过滤器。
我创建了一个自定义的BroadcastReceiver,它创建了一个通知,并且如果我在onCreate中注册接收器,它也可以工作。
这是onCreate中代码的registerReceiver部分(在打开应用程序时有效)
receiver = new WifiStateReceiver();
IntentFilter filter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(receiver, filter);
这是我的BroadcastReceiver:
public class WifiStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("TEST", "IT WORKS!");
}
}
这是我的AndroidManifest.xml
.
.
.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
.
.
.
<receiver
android:name=".WifiStateReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
</receiver>
.
.
.
关闭我的应用程序后,此功能不再起作用。因此,我需要某种永不关闭的服务,但不确定这种方法的电池效率如何。 wifi连接/状态更改时,有没有办法运行服务?正如我已经说过的那样,将意图过滤器放入AndroidManifest似乎不起作用,因为我正在使用android 9。