ログイン アクティビティで、ユーザーが GPS をアクティブ化/オンにしているかどうかを確認します。そうでない場合は、AlertDialog
ユーザーに GPS をオンにするように求めるメッセージを表示します。
から、AlertDialog
次のようにインテントを起動/開始します。
Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
システム設定から戻るボタンを押すと、ユーザーは電話のホーム画面に戻ります...つまり、「アプリを閉じます」。
私は試してみonActivityResult
ましたが、役に立ちませんでした。さらに、私は他のユーザーが抱えていた同様の問題を読み上げましたが、ほとんどの回答がonActivityResult
.
誰かが問題に光を当てることができますか?
編集:
の完全なコードは次のAlertDialog
とおりです。
builder = new AlertDialog.Builder(this);
builder.setTitle("GPS Not Found");
builder.setMessage("Want To Enable?");
//Dialog - Yes option
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialogInterface, int i)
{
Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(settingsIntent,1);
}
});
//Dialog - No option
builder.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialogInterface, int i)
{
}
});
//Show he dialog
builder.create().show();
編集:
ここにOnPause()
とOnResume()
メソッドがあります。プロバイダーがまだアクティブかどうかを確認するだけで、locationManager
. 設定から戻ると、「TEST 1」も「TEST 2」も印刷されません。
@Override
protected void onResume()
{
Log.i(ERRORTAG, "TEST 1");
super.onResume();
if(provider != null)
{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, refreshTime, refreshDistance, this);
gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
}
@Override
protected void onPause()
{
Log.i(ERRORTAG, "TEST 2");
super.onPause();
if(locationManager != null)
{
locationManager.removeUpdates((LocationListener) this);
gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
if(loginDialog != null)
{
loginDialog.dismiss();
}
}