android - 在设置中收听位置访问禁用/启用

标签 android android-intent broadcastreceiver android-broadcast

在 Android 操作系统中,在“设置”-->“位置服务”中,有一个名为“访问我的位置”的切换按钮>”,可用于禁用和启用从应用访问位置信息。

目前,我正在开发一个位置服务应用程序。我想知道,我如何才能在我的 Android 项目中收听此设置?当用户禁用或启用“访问我的位置”时,是否有任何广播接收器可以让我立即知道?

如果没有任何广播接收器,我如何在我的 Android 项目中收听此更改?

最佳答案

这对我有用:

将接收器添加到 list 文件:

<receiver
        android:name="com.eegeo.location.LocationProviderChangedReceiver">
        <intent-filter>
            <action android:name="android.location.PROVIDERS_CHANGED" />
        </intent-filter>
    </receiver>

检查接收器中的两个位置提供者:

public class LocationProviderChangedReceiver  extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        boolean anyLocationProv = false;
        LocationManager locationManager = (LocationManager) MyMainActivity.context.getSystemService(Context.LOCATION_SERVICE);

        anyLocationProv |= locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        anyLocationProv |=  locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        Log.i("", "Location service status" + anyLocationProv);


    }

}

尽管由于显而易见的原因多次调用此接收器,但这会告诉您状态。

关于android - 在设置中收听位置访问禁用/启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20265981/

相关文章:

安卓 Gradle : can't find symbol variable

android - 在 2 个应用程序之间连续处理 Intent

android - 检查是否有使用操作字符串注册的 BroadCastReceiver

android - 应用程序被杀死时如何在Android中检测来电电话号码?

带有 Fragments 的 Android espresso。 getActivity 返回 NULL

android - 通过命令行将 keystore 密码传递给 Cordova Android

java - 关闭整个应用程序android的声音

Java 方法在预定时间后未执行

android - 无法从广播接收器启动前台服务

java - 如何获取android中类中的当前上下文?