我尝试了一种方法,使用一个监听PROVIDERS_CHANGED操作的广播接收器,但它只告诉我何时打开/关闭位置设置。我想知道任何应用程序何时使用定位服务来获取位置。我不需要知道是哪个应用程序在做这件事,我也不关心位置本身。我只想知道什么时候某个应用程序试图获取一个位置,什么时候它停止这样做。这可能吗?

最佳答案

我不知道您是否真的需要通过广播接收器通知,但如果不是绝对需要,则可以使用GpsStatus.Listener
使用方法如下:

mLocationManager.addGpsStatusListener(new GpsStatus.Listener(){

    @Override
    public void onGpsStatusChanged(int event) {
        if(event==GpsStatus.GPS_EVENT_STARTED){
            Log.d(TAG,"Gps Started");
        }else if(event==GpsStatus.GPS_EVENT_STOPPED){
            Log.d(TAG,"Gps Stopped");
        }
    }
});

如果你真的需要通过BroadcastReceiver接收这些信息:只需将这些代码包装在一个服务中,然后从那里发送事件。

07-28 14:20