我正在开发一个使用位置的应用程序。
启动应用程序时,它会验证无线位置是否处于活动状态。如果没有,则会出现一个对话框,其中包含一个以 , 开头的按钮Intent
来Settings.ACTION_SECURITY_SETTINGS
显示位置设置。
我想为我的用户简化该任务并隐藏可能使他们选择错误设置并再次获得相同对话框的不必要设置。
此应用程序不需要 GPS 精度。在某些情况下,智能手机可能无法找到 GPS 信号,或者跟踪位置可能需要很长时间,从而阻止我的应用程序及时显示结果,从而使“无线网络”成为获取位置的更好选择。
这是我用来测试“无线网络”是否处于活动状态并打开设置的一些代码:
private void checkLocationEnabled() {
String provider = Settings.Secure.getString(getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (provider == null || !provider.contains("network")) {
// Wireless location not enabled
showDialog();
}
}
private void showDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("No network location. Please, activate this setting in "
+ "Location And Security")
.setCancelable(false)
.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
startActivity(intent);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
}
});
Dialog dialog = builder.create();
}
如何过滤Settings.ACTION_SECURITY_SETTINGS
以仅显示无线网络选项并删除GPS和其中的所有剩余选项Intent
?