2017-03-01 2 views
0

wifiの接続を管理するアプリで働いています。に、wifiの位置情報サービスがオフになっているときにスキャンがオフになっています。ロケーションサービスの変更をリッスンするためにブロードキャスト受信機をどう購読する必要がありますか

私が欲しいのは、ユーザーがオフにしてからlocation servicesを聞いて聞くことができるアクションがあるかどうかを知ることです。私はアンドロイドのドキュメントを検索していますが、2つの可能なアクションがありますが、どちらを使用するかはわかりません。

アクションが

android.location.PROVIDERS_CHANGED 

android.location.MODE_CHANGED 

ているドキュメントは、私を助けていません。おかげでたくさんの

+0

の可能性のある重複[ブロードキャストレシーバ/またはブロードキャストレシーバのデータ転送のためのサービスでGPS位置を取得する](http://stackoverflow.com/questions/7709030/get-gps-location-in-a-broadcast-receiver-or-service-to-broadcast -receiver-data-t) –

+0

[How to?場所の設定がオンになっている(Android App)を聞く](http://stackoverflow.com/questions/36325088/how-to-listen-for-location-setting-being-turned-on-android-app) – maciekjanusz

答えて

0

これにより、ユーザーはオン/オフの任意のアクションをトリガーしたい場合場所が

を提供して便利ですこの操作をマニフェストに追加する必要があります

<action android:name="android.location.PROVIDERS_CHANGED" /> 

とした後、あなたの放送受信機

<receiver android:name=".GpsLocationReceiver"> 
    <intent-filter> 
     <action android:name="android.location.PROVIDERS_CHANGED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 

を誘発することができ、あなたのBroadcastReceiverクラスで使用すると、以下の以下の指定され、そのクラスにLocationListenerを実装する必要があり、このアクションを追加します。..

public class GpsLocationReceiver extends BroadcastReceiver {   
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { 
       Toast.makeText(context, "in android.location.PROVIDERS_CHANGED", 
       Toast.LENGTH_SHORT).show(); 
      LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
    if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     //NO GPS 
    }else{ 
//Gps is on 
    } 
      } 
     } 
    } 
+0

ありがとう!受信側では、ロケーションサービスがオンかオフかどうかをどのように知ることができますか? – acabezas

+0

LocationMangerを試してください...私の編集をチェックしてください。 –

0

マニフェスト:

<action android:name="android.location.PROVIDERS_CHANGED" /> 


<receiver android:name=".ObserveGpsState"> 
    <intent-filter> 
     <action android:name="android.location.PROVIDERS_CHANGED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 

そして....

public class ObserveGpsState extends BroadcastReceiver {   
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().matches(LocationManager.PROVIDERS_CHANGED_ACTION)) { 
       ......... 
      } 
     } 
    } 
関連する問題