Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何检查网络在我的android应用程序运行期间的状态是否发生了变化?_Java_Android - Fatal编程技术网

Java 我如何检查网络在我的android应用程序运行期间的状态是否发生了变化?

Java 我如何检查网络在我的android应用程序运行期间的状态是否发生了变化?,java,android,Java,Android,我正在为android开发一个应用程序,它需要网络来从xml文件中检索一些信息。我有这样一个代码,用于查找用户是否启用了网络: public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo()

我正在为android开发一个应用程序,它需要网络来从xml文件中检索一些信息。我有这样一个代码,用于查找用户是否启用了网络:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnected()) {
        return true;
    }
    return false;
}
我是这样使用这个函数的:

boolean connected = isOnline(); 

    if(connected) 
        getLocation(); 
    else
        showDialogNetwork();
函数showDialogNetwork()

    public void showDialogNetwork() {

    new AlertDialog.Builder(this)  
    .setMessage("No network")  
    .setTitle("Error")  
    .setCancelable(false)
    .setPositiveButton(android.R.string.ok, 
        new DialogInterface.OnClickListener() {  
            public void onClick(DialogInterface dialog, int whichButton) {
                // launch settings
                Intent settings = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
                startActivity(settings);
            }  
        })
    .setNegativeButton(android.R.string.cancel,
        new DialogInterface.OnClickListener() {  
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.dismiss();

                // finish activity
                finish();
            }  
        })
    .show();
}

如果设备上的网络被禁用,showDialogNetwork()将打开设置菜单中的网络选项卡。但是当用户打开WiFi,并且应用程序在后台运行时,它并不“理解”网络已经打开。我需要在网络打开后“杀死”应用程序,以便从互联网上获取信息。如何在应用程序运行期间不断检查网络状态是否发生变化?提前感谢,伙计们:)

创建一个带有
意向过滤器的
BroadcastReceiver
,该过滤器“监听”了

WifiManager.NETWORK_STATE_CHANGED_ACTION
您可以在代码中注册,或者如果您在清单中注册了
BroadcastReceiver
,则对

要同时监控移动互联网连接的变化,您需要“倾听”以下信息:

在这种情况下,请在清单中使用以下内容

android.net.conn.CONNECTIVITY_CHANGE

创建一个
BroadcastReceiver
,其中包含一个
IntentFilter
,用于“侦听”以下内容

WifiManager.NETWORK_STATE_CHANGED_ACTION
您可以在代码中注册,或者如果您在清单中注册了
BroadcastReceiver
,则对

要同时监控移动互联网连接的变化,您需要“倾听”以下信息:

在这种情况下,请在清单中使用以下内容

android.net.conn.CONNECTIVITY_CHANGE

您还可以使用TelephonyManager侦听对数据连接的更改-

)

更好的是,注册android.net.conn.CONNECTIVITY\u更改广播操作,包括wifi、数据等-


您还可以使用TelephonyManager监听数据连接的更改-

)

更好的是,注册android.net.conn.CONNECTIVITY\u更改广播操作,包括wifi、数据等-