AlertDialog If / Else检查系统服务?

时间:2015-05-05 14:14:07

标签: java android gps alertdialog application-settings

快速提问,我有一种方法可以建立警报对话框,并且当它检测到未启用Android设备上的WIFI或GPS时想要调用它。

基本上是这样的:

如果:设备没有wifi或GPS //不知道这段代码是怎么回事 { 建立警报对话框 } 其他: { 别担心,什么也不做 }

任何想法?

我的代码:

 public void checkPhoneStatus(){
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        alertDialog.setTitle("Warning");
        alertDialog.setMessage("We've noticed your WIFI and GPS are off. Are you okay? Do you want to call the Authorities?");
        alertDialog.setIcon(R.drawable.about);
        alertDialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent callIntent = new Intent(Intent.ACTION_CALL); //Runs the intent - starts the phone call
                callIntent.setData(Uri.parse("tel:77777777")); //Number set for the phone call
                startActivity(callIntent); //Start the intent
            }
        });
        alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "Please go to Settings and enable WIFI or GPS!",
                        Toast.LENGTH_SHORT).show();
            }
        });
        alertDialog.show();
    }

2 个答案:

答案 0 :(得分:0)

设计听起来不准确。

我会做什么:

1)有一个后台进程,检查互联网/ wifi是否每隔n秒ping一次(即; n = 120)

2)如果ping失败,然后显示对话框。

并且只在您知道之前构建对话框。

你需要将业务逻辑与ui分开;它导致更清洁的设计。

答案 1 :(得分:0)

您可以使用它来检查WiFi是否已启用:

Html.BeginForm("ACTIONNAME", "CONTROLLERNAME", FormMethod.Post, new { @class = "smart-form ", id = "myID" }))

要检查GPS是否已启用,您可以使用:

public boolean isWiFiEnabled(Context context) {
     WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
     return wifi.isWifiEnabled();
}
编辑:我以这种方式使用它:

public boolean isGPSEnabled (Context context){
     LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
     return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}

请注意,我已将if (!isWiFiEnabled(this) || !isGPSEnabled(this)) { displayConnectivityProblemDialog(); } 方法重命名为checkPhoneStatus()。没有必要,但需要品味:)