2016-07-07 27 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应用程序(任何应用程序)使用的是使用PASSIVE_PROVIDER。 https://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER –

相关问题