【问题标题】:Getting app name that broadcast a intent获取广播意图的应用程序名称
【发布时间】:2016-07-07 20:16:57
【问题描述】:

我正在开发一个跟踪 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 获取坐标的次数。

这里的问题是我不知道如何获取广播事件的应用名称。

有什么办法吗?

谢谢大家。

【问题讨论】:

    标签: android android-intent android-broadcast android-gps


    【解决方案1】:

    这里的问题是我不知道如何获取广播事件的应用名称。

    应用程序不会广播 Intent。系统广播Intent。您无法确定用户更改其设备设置以启用或禁用位置提供程序的原因。毕竟,不一定有特定的应用驱动原因。用户可以简单地选择点击通知阴影中的磁贴,进入“设置”并切换提供者状态,或者以其他方式更改状态只是为了傻笑。

    【讨论】:

    • 但是这个接收“android.location.GPS_ENABLED_CHANGE”不跟踪 GPS 在开/关之间的变化状态。它正在跟踪对 GPS 坐标的请求。
    • 但是我明白你说的。谢谢你的帮助! :D
    • 我明白了。我发现另一个应用程序(任何应用程序)使用了 GPS 正在使用 PASSIVE_PROVIDER。 developer.android.com/reference/android/location/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多