快速提问,我有一种方法可以建立警报对话框,并且当它检测到未启用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();
}
答案 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()
。没有必要,但需要品味:)