Android Gps状态启用/禁用广播接收器
我正在尝试注册一个广播接收器,以便在gps状态更改时接收更新 但是,当gps状态从enabled(启用)更改为disabled(禁用)或反之亦然时,似乎不会调用我的GpsChangeReceiver onReceive方法 首先,我正在注册接收者:Android Gps状态启用/禁用广播接收器,android,Android,我正在尝试注册一个广播接收器,以便在gps状态更改时接收更新 但是,当gps状态从enabled(启用)更改为disabled(禁用)或反之亦然时,似乎不会调用我的GpsChangeReceiver onReceive方法 首先,我正在注册接收者: GpsChangeReceiver m_gpsChangeReceiver = new GpsChangeReceiver(); this.registerReceiver(m_gpsChangeReceiver, new IntentFilter(
GpsChangeReceiver m_gpsChangeReceiver = new GpsChangeReceiver();
this.registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));
然后,我有我的GPS接收器
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
}
}
}
最后,我的清单包含:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
有人知道为什么当我从手机设置中修改gps接收器的状态时,gps接收器从未被调用吗?在Android中注册广播接收器有两种方法:
getApplicationContext().registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));
案例2(在AndroidManifest.xml中注册的广播接收器)
即使应用程序被禁用,您仍将收到广播(系统将唤醒您的应用程序)。当您希望接收广播时,无论您的应用程序是否正在运行,这都是正确的方法
将此接收器添加到您的AndroidManifest.xml:
<receiver android:name="com.yourpackage.NameOfYourBroadcastReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
</intent-filter>
</receiver>
编辑:
某些特殊广播(即屏幕打开或屏幕关闭)必须在代码中注册(案例1),否则它们将不会发送到您的应用程序。可从API 9+@steve.mit获得。我需要声明案例1的许可吗?该问题的答案是否适用于仅为开/关而编程注册(蓝牙、wifi)的任何接收器,而不是实际访问硬件本身?