2016-07-07 4 views
0

GPSの使用状況を追跡するアプリを開発しています(GPSはオン/オフになっていますが、位置情報が要求されただけでなく)。インテントをブロードキャストするアプリ名を取得する

調査の結果、私はマニフェストで次のコードを使用してこれをアーカイブすることができます。

<receiver android:name=".triggers.TriggerGPS"> 
    <intent-filter> 
     <action android:name="android.location.GPS_ENABLED_CHANGE" /> 
    </intent-filter> 
</receiver> 

これは、アプリケーションがGPS座標を要求するたびにTriggerGPSクラスが呼び出されるときに機能します。

public class TriggerGPS extends BroadcastReceiver { 

    Calendar c = Calendar.getInstance(); 

    @Override 
    public void onReceive(Context context, Intent intent) { 

      String currentDatetime = c.get(Calendar.DAY_OF_MONTH) + "/" + c.get(Calendar.MONTH) + "/" + 
        c.get(Calendar.YEAR) + " " + c.get(Calendar.HOUR_OF_DAY) + ":" + 
        c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND); 

      Log.d("---------log--------", "Intent (" + intent.getAction() + ") GPS Status onReceive : " + currentDatetime); 
    } 
} 

しかし、私のアプリは、各アプリはGPSを使用して、どのように何回アプリは一日あたりのデ座標を取得するためにGPSを使用している示すレポートを作成する必要があります。

ここでの問題は、イベントをブロードキャストするアプリ名を取得する方法を理解できないことです。

これを行う方法はありますか?

ありがとうございます。

答えて

1

ここで問題となるのは、イベントをブロードキャストするアプリ名を取得する方法がわかりません。

アプリはブロードキャストしません。Intent。システムは、Intentをブロードキャストします。ユーザーがデバイス設定を変更した理由を特定する方法がないため、ロケーションプロバイダを有効または無効にすることはできません。結局のところ、特定のアプリ駆動型の理由がある必要はありません。ユーザーは、単に通知シェードでタイルをタップするか、設定に入り、プロバイダーの状態を切り替えることができます。そうでなければ、クズのためだけに状態を変更することができます。

+0

しかし、これは "android.location.GPS_ENABLED_CHANGE"を受信して​​も、GPSのオン/オフの変更状態は追跡されません。 GPS座標の要求を追跡しています。 –

+0

しかし、私はあなたが言ったことを理解しています。助けてくれてありがとう! :D –

+0

私は理解しました。 GPSがアプリ(どのアプリ)でも使用されていたことが判明したもう1つは、PASSIVE_PROVIDERを使用していました。 https://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER –

関連する問題