2012-02-29 13 views
0

私のアプリケーションでは、少なくとも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スレッドをブロックすることはできませんが、どうすればこの状況を乗り越えることができますか?)

ユーザがネットワーク設定で何かを選択した後にコードを実行することはありますか?

ありがとうございます!ギレルモ。

+0

状況を確認してコードを実行するバックグラウンド(レシーバ、サービス、スレッド)でスレッドを実行できます。 – MKJParekh

答えて

0

設定画面が論理的とACCドキュメントに、あなたのactivityの前に来て、あなたのactivitypausedあり、それが必要なときに、あなたのactivityresumedです...ので、私は推測、あなたがチェックコードを使用する必要がありますonResume ...

関連する問題