我使用以下代码检查整个应用中的互联网连接。
public class UpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isConnected = activeNetInfo != null
&& activeNetInfo.isConnectedOrConnecting();
if (isConnected){
Log.i("NET", "connecte" + isConnected);
Toast.makeText(context, "net Connected", Toast.LENGTH_LONG)
.show();
}
else{
Log.i("NET", "not connecte" + isConnected);
Toast.makeText(context, "No Internet Connection", Toast.LENGTH_LONG)
.show();
}
}
}
问题是,当他们没有互联网连接/ Wi-Fi信号时,吐司消息也在其他应用程序中显示...我该如何避免?
感谢:)
答案 0 :(得分:0)
创建一个应用程序类:
public class MyApplication extends Application {
private static MyApplication instance;
// Returns the application instance
public static MyApplication getInstance() {
if (instance == null)
instance = this;
return instance;
}
}
添加到清单:
<application
android:name=".MyApplication"
... >
在你的广播接收器中:
Toast.makeText(MyApplication.getInstance().getApplicationContext(), "No Internet Connection", Toast.LENGTH_LONG)
.show();
答案 1 :(得分:0)
使用this或getBaseContext()而不是contex。
答案 2 :(得分:0)
您正在使用BroadcastReceiver接收器检查是否存在互联网连接。无论应用程序如何,只要网络连接发生变化,就会执行此操作。既然你是新人,我会解释它。
我们可以将广播接收器与收听某种类型的广播的广播联系起来,而广播是在事件发生时由android系统发送的东西。因此,如果事件属于广播接收器的类型,您将获得它。
因此,如果您只需要检查连接,可以从您的应用程序中创建一个方法并调用它。
public boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isConnected = activeNetInfo != null
&& activeNetInfo.isConnectedOrConnecting();
if (isConnected){
Log.i("NET", "connecte" + isConnected);
Toast.makeText(context, "net Connected", Toast.LENGTH_LONG)
.show();
}
else{
Log.i("NET", "not connecte" + isConnected);
Toast.makeText(context, "No Internet Connection", Toast.LENGTH_LONG)
.show();
}
return isConnected;
}
每当您需要检查连接时,请调用此方法。
OR
如果您需要根据上述要求获得上述事件更改的通知,您可以使用相同的广播接收器,而不是在Manifest文件中注册广播接收器,在启动时从应用程序的代码注册它并取消注册当你的申请结束时。
答案 3 :(得分:0)
我很遗憾地说,没有一个答案实际上回答了原来的问题“......吐司消息也在其他应用程序中显示......我该如何避免?”
无论哪个应用程序位于顶部,都会显示Toast。它就是这样设计的。所以你不能'避免'那个。您必须避免使用Tosat来避免此行为。接收器在后台运行并显示Toast。它不会打扰当前向用户显示哪个应用程序。
请检查此链接。 http://developer.android.com/guide/topics/ui/notifiers/toasts.html