2

我正在开发一个需要网络连接才能运行的简单应用程序。当应用程序启动时,如果没有 wi-fi 连接,我想向用户显示一个模式对话框,有两个选项:1)启用 wifi 或 2)退出应用程序。

问题是如果单击“关闭应用程序”按钮,我找不到可以调用来关闭应用程序的 android 方法。

有没有我还没找到的方法?还是有更好的方法来处理整个用例?

4

4 回答 4

3

要检查Internet 连接,请使用以下代码:

private boolean haveNetworkConnection() {
          final ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
             if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() &&    conMgr.getActiveNetworkInfo().isConnected()) {
                   return true;
             } else {
                   System.out.println("Internet Connection Not Present");
                 return false;
             }
}

并在按钮上退出应用程序单击使用此代码:

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        startActivity(intent);

试试看..

于 2013-08-30T08:56:17.267 回答
1

我有一个用于检查 wifi 速度的类似代码。请看看这是否有帮助:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TextView text= (TextView) findViewById(R.id.TV);

    ConnectivityManager connectivityManager =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = connectivityManager.getActiveNetworkInfo();

    if (info == null ||
            !connectivityManager.getBackgroundDataSetting()) {
        // No Network detected
        findViewById(R.id.quit).setVisibility(View.VISIBLE);
        findViewById(R.id.quit).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });
        //return;
    }else {
        int netType = info.getType();
        int netSubtype = info.getSubtype();
        if (netType == ConnectivityManager.TYPE_WIFI) {
            //WIFI DETECTED
            WifiManager wifiManager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();

            int linkSpeed = wifiInfo.getLinkSpeed(); //measured using WifiInfo.LINK_SPEED_UNITS
            text.setText("Connection is wifi and the speed is "+Integer.toString(linkSpeed));


        } else if (netType == ConnectivityManager.TYPE_MOBILE
                && netSubtype >2) {
            text.setText("connection is 3g");  
        } else {
            text.setText("connection is 2g");

        }


    }
}

}

于 2013-08-30T06:27:47.610 回答
0

我了解到您的问题是关闭应用程序,对吗?你试过了finish();吗?

于 2014-04-05T15:16:30.813 回答
0

你应该考虑退出意见,

这是一个关于退出应用程序SO 答案的好答案

您可以说没有 WiFi。

如果你只是像这样制作一个AlerDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Hint"
                        .setMessage("No WiFi!"
                        .setPositiveButton("OK", null).show();

或者像这样的吐司

Toast.makeText(yourActivity.this, "No WiFi!", Toast.LENGTH_LONG).show();

如果要检查连接,可以使用以下代码段:

public boolean isOnline() {
        // check if an internet connection is present
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (!(netInfo != null && cm.getActiveNetworkInfo().isAvailable() && cm
                .getActiveNetworkInfo().isConnected())) {
            return false;
        }
        return true;
    }
于 2013-08-30T06:02:26.740 回答