首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Gps状态启用/禁用广播接收机

Gps状态启用/禁用广播接收机
EN

Stack Overflow用户
提问于 2012-10-01 06:09:22
回答 1查看 14.5K关注 0票数 19

我正在尝试注册一个广播接收器,以便在gps状态更改时接收更新。

但是,当gps状态从启用更改为禁用时,我的GpsChangeReceiver onReceive方法似乎不会被调用,反之亦然。

首先,我要注册接收器:

代码语言:javascript
复制
GpsChangeReceiver m_gpsChangeReceiver = new GpsChangeReceiver();
this.registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));

然后,我有了我的GPS接收器

代码语言:javascript
复制
public class GpsChangeReceiver extends BroadcastReceiver
{   
  @Override
  public void onReceive( Context context, Intent intent )
  {
    final LocationManager manager = (LocationManager) context.getSystemService( Context.LOCATION_SERVICE );
    if (manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
        //do something
    }
    else
    {
        //do something else
    }
  }
}

最后,我的清单包含:

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

当我从手机的设置中修改gps接收器的状态时,有没有人知道为什么从来没有调用过??

EN

回答 1

Stack Overflow用户

发布于 2013-10-21 23:04:19

在Android中有两种注册广播接收器的方式:

代码中的

  1. (您的情况) AndroidManifest.xml

中的

让我来解释一下不同之处。

情况1(在代码中注册的广播接收器)

只要您注册接收器的contextalive,您就会收到广播。因此,当activity应用程序killed (取决于您注册接收器的位置)时,您的将不再接收广播。

我猜您在activity context中注册了broadcast receiver,这不是很好的方法。如果您想为您的应用程序上下文注册broadcast receiver,您可以这样做:

代码语言:javascript
复制
getApplicationContext().registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));

情况2(在AndroidManifest.xml中注册的广播接收器)

你的会收到广播,即使你的应用程序被(系统会唤醒你的应用程序)。当你想接收广播而不管你的应用是运行时,这是正确的方法。

将此接收器添加到您的AndroidManifest.xml:

代码语言:javascript
复制
<receiver android:name="com.yourpackage.NameOfYourBroadcastReceiver">
  <intent-filter>
    <action android:name="android.location.PROVIDERS_CHANGED" />
  </intent-filter>
</receiver>

编辑:一些特殊的广播(即SCREEN_ON或SCREEN_OFF)必须在代码中注册(情况1),否则它们不会被传递到您的应用程序。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12665558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档