获取广播意图的应用程序名称
问题描述:
我正在开发一个跟踪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获得德每天坐标。
这里的问题是,我无法弄清楚如何获取广播事件的应用程序名称。
有什么办法可以做到这一点?
谢谢大家。
答
这里的问题是,我无法弄清楚如何获取广播事件的应用程序名称。
应用程序不会广播那个Intent
。系统广播Intent
。您无法确定用户更改其设备设置以启用或禁用位置提供商的原因。毕竟,不一定要有一个特定的应用驱动的原因。用户可以简单地选择在通知窗口中点击图块,进入设置并切换提供者状态,或者改变状态以适应咯咯笑声。
但是,这个接收“android.location.GPS_ENABLED_CHANGE”没有跟踪开/关之间的GPS的变化状态。它正在跟踪GPS坐标的请求。 –
但我明白你的意思。谢谢你的帮助! :D –
我明白了。另一个,我发现知道GPS应用程序(任何应用程序)使用的是使用PASSIVE_PROVIDER。 https://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER –