vin*_*try 5 android broadcastreceiver
我是android编程的新手。我试过在活动中注册广播接收器,但是当应用程序 onPause 时我的接收器不工作。所以我发现我需要在清单中注册我的接收器。
我的目标是在用户关闭 Wifi 后关闭我的应用程序一段时间。
这是我的代码,但它不起作用。
public class ReceiverWifi extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
MainActivity m = new MainActivity();
m.finish();
}
};
if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int newWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
switch (newWifiState) {
case WifiManager.WIFI_STATE_DISABLED:
Toast.makeText(context, "Wi-fi Disconnected ",
Toast.LENGTH_SHORT).show();
handler.postDelayed(runnable, 15 * 1000);
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的清单:
<receiver android:name="com.example.wifimonitor.ReceiverWifi" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
我如何实现我的目标?
kod*_*cha -1
您的广播接收器位于主要活动类别中?如果是这样,您可以保存应用程序的全局上下文,并稍后在广播接收器中将其关闭。
如果它位于服务或提供商上,只需在启动/注册它时向其发送应用程序的实例即可。然后从该实例调用 finish() 。
编辑:
尝试这个:
在您的主要活动中创建此公共方法:
public static void closeActivity(){
finish();
}
Run Code Online (Sandbox Code Playgroud)
然后在您的广播接收器中调用此方法,如下所示:
MainActivity.closeActivity();
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 ;)
| 归档时间: |
|
| 查看次数: |
7752 次 |
| 最近记录: |