私のアプリケーションでは、少なくとも1つのロケーション・プロバイダーを使用可能にする必要があります。一つは、私が使用して有効になっているかどうかを知るために:今少なくとも1つのロケーション・プロシージャーがAndroidで有効になっている場合にのみ、アプリケーションの入力を許可する
isGpsLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
、私は何も有効にされていないことを警告する活動を作成し、ユーザーは、私がACTION_LOCATION_SOURCE_SETTINGSの意図を持つGPSオプションを開き、「GPSを有効にする」を選択した場合。
私は彼が1つを有効にしているかどうかをチェックし、彼がそうした場合にのみ続行したいと思っています。
私は「GPSを有効にする」ボタンでこのコードを持って
showGpsOptions();
isGpsLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (isGpsLocationEnabled || isNetworkLocationEnabled){
Intent startIntent = new Intent(EnableLocationProviderActivity.this, SensingService.class);
startService(startIntent);
} else {
finish();
}
私の問題は)コードがshowGpsOptions(後にその実行を続けているisGpsLocationEnabledとisNetworkLocationEnabledは、ネットワーク設定で、ユーザーの選択で更新されることは決してありませんということです(UIスレッドをブロックすることはできませんが、どうすればこの状況を乗り越えることができますか?)
ユーザがネットワーク設定で何かを選択した後にコードを実行することはありますか?
ありがとうございます!ギレルモ。
状況を確認してコードを実行するバックグラウンド(レシーバ、サービス、スレッド)でスレッドを実行できます。 – MKJParekh