连接到没有互联网的WiFi dhcp设备并切换到移动数据应用程序崩溃

时间:2017-11-25 21:14:56

标签: java android mobile jquery-mobile wifi

概述和问题

在没有互联网的情况下连接到WiFi设备并使用仍然连接的WiFi设备切换到移动数据应用程序看不到SSID

WiFi设备广播SSID并向Android手机发出IP。 WiFi设备没有Internet但是分配了IP。我将移动数据用于互联网。当我连接到没有互联网的WiFi设备时,当通过WiFi无法访问互联网时,它会自动切换到移动数据。我加载应用程序,它崩溃了。当我禁用移动数据时,我可以加载应用程序而没有任何问题。问题与getAllNetworkInfo被弃用有关吗?我加载应用程序时遇到的错误来自我的MainActivity.java(please_connect_to_cam_wifi)。

似乎正在发生的事情是当移动设备启用时会丢失CurrentAPSSID()并且当加载应用程序并查找wifiInfo.getSSID()时。我试过添加getActiveNetworkInfo()。

globalVariables.getCurrentAPSSID()位于我的四个活动中。不应该修改GlobalVariables.java文件吗?

问题不在于移动设备和互联网正在通过wifiInfo.getSSID(),以便onResume在启用移动设备后看到它。任何人都可以协助解决这个问题三江源

**************************** MainActivity ****************** ****************

@Override
protected void onResume() {
    super.onResume();
    Log.d(TAG, "+ onResume +");

    if (!globalVariables.getCurrentAPSSID().equals(MyConfig.SPACE)) {

        startProgress(getResources().getString(R.string.progress_message_check));
        setupModel.setWifiCountDown(0);
        handlerCheckSmpDevice.postDelayed(runnableCheckSmpDevice, 10000);
    }else {
        if (MyConfig.NEW_TEST_WIFI) {
            startProgress(getResources().getString(R.string.progress_message_scan));
            globalVariables.scanWifi();
            handlerScanWifi.postDelayed(runnableScanWifi, 5000);
        }else {
            toSomethingErrorViewWithMessage(mContext,
                    getResources().getString(R.string.msg_please_connect_to_cam_wifi));
        }
    }

    isOff = false;
}

以下代码位于我的GlobalVariables.java中。

下面的代码

******** GlobalVariables.java *************** **********     / **      *获取当前连接AP ssid      * @return AP ssid字符串      * /     public String getCurrentAPSSID(){

    String result = "";
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    if (wifiInfo != null) {

        String ssid = wifiInfo.getBSSID();
        if (ssid != null) {
            ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            Log.d(TAG, "networkInfo: "+networkInfo);
            if (networkInfo.isConnected()) {
                result = wifiInfo.getSSID().replace("\"", "");
            }
        }

    }

    Log.d(TAG, "wifiInfo.getSSID(): "+result);
    if (!result.equals("")) {
        tempSsid = result;
    }
    return result;

************************* getActiveNetworkInfo ********************* **********

getActiveNetworkInfo();

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null) { // connected to the internet
        if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
            // connected to wifi
            Toast.makeText(context, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show();
        } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
            // connected to the mobile provider's data plan
            Toast.makeText(context, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show();
        }
    } else {
        // not connected to the internet
    }

0 个答案:

没有答案