3

我正在尝试注册一个BroadcastReceiver以获取Location设置的状态更改

位置设置

但我没有找到任何文件。我只发现BroadcastReceiver检查某些搜索提供程序(GPSNetwork providers)的状态;但不适用于检查此特定选项 ( Location) 在系统首选项中是否处于活动状态。

有人可以告诉我正确的方向吗?


笔记:

我使用了 Google Play 定位服务com.google.android.gms.location.LocationListener界面)。

4

2 回答 2

2

好吧,我找到了一种方法来检查“ Location”设置action bar是启用还是禁用;但没有BroadcastReceiver遗憾

private static final String TAG = getClass().getName();

/* We define the LocationManager */
LocationManager location_Manager= (LocationManager) getSystemService(LOCATION_SERVICE);

/* If the GPS provider or the network provider are enabled; the Location setting is enabled.*/
if(location_Manager.isProviderEnabled(LocationManager.GPS_PROVIDER) || location_Manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
    Log.d(TAG, "The Location setting is enabled");
}else{
   /* We send the user to the "Location activity" to enable the setting */
   Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
   startActivity(intent);
}

我真的不需要BroadcastReceiver; 因为拥有我的应用程序的“架构”允许我没有它;但我很想知道如何使用它。

注意:

如果有人找到解决方法,BroadcastReceiver我会用她的答案更改我的正确答案。

于 2015-02-05T17:12:12.827 回答
1

您可以尝试使用位置侦听器。

onProviderDisabled(String provider)
当提供者被用户禁用时调用。

与提供者字符串进行比较,例如
provider.equalsIgnoreCase(LocationManager.GPS_PROVIDER) http://developer.android.com/reference/android/location/LocationListener.html

于 2015-06-30T07:00:47.957 回答