【发布时间】:2015-01-28 14:16:38
【问题描述】:
我有两个活动是Register(),另一个是ReadNews()。我正在使用广播接收器自动检测互联网连接以执行一些代码。
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiNetwork != null && wifiNetwork.isConnected()) {
if(MyApplication.isActivityVisible() == true) {
Log.d("WifiReceiver", "Have Wifi Connection");
Toast.makeText(context, "تم الإتصال بالشبكة", Toast.LENGTH_LONG).show();
if (context instanceof RegisterActivity){
Intent i = new Intent(context,
ReadNews.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
else {
}
}
}
我如何才能仅在互联网连接继续而用户仍在使用RegisterActivity() 时才启动ReadNews() 活动?
我尝试使用 if (context instanceof RegisterActivity) 之类的上下文,但这似乎不对。
【问题讨论】:
-
使您的
BroadcastReceiver成为您的RegisterActivity的内部类,并在onResume()中注册并在onPause()中取消注册。不要在清单中使用<intent-filter>。 -
你能给我举个例子吗?
-
@Squonk +1 提出您的建议。但是,您不需要将此作为 RegisterActivity 的内部类来实现 OP 的要求。它可以是一个独立的类。
-
请检查我的回答@Squonk
-
任何关于使课程独立的帮助都被占用@DavidWasser
标签: android android-intent broadcastreceiver android-context