私は位置情報を使用するアプリに取り組んでいます。
アプリを起動すると、ワイヤレスロケーションがアクティブかどうかが確認されます。そうでない場合は、位置設定を表示するための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