【问题标题】:Detecting location settings change from quick settings检测位置设置从快速设置更改
【发布时间】:2020-03-23 15:37:04
【问题描述】:

我目前正在开发一个需要 Android 的位置服务始终处于活动状态的应用。

现在我能够检测到用户在恢复应用时(在 onResume() 事件中)是激活还是停用了定位服务。

问题是,如果用户通过快速设置菜单停用定位服务,我无法检测到该事件。

我如何知道用户何时通过快速设置激活/停用设备的位置?

谢谢。

我的代码:

...

BroadcastReceiver mGpsSwitchStateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction() != null && intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
            // Make an action or refresh an already managed state.
            Log.d("vtApp", "CHANGED");
        }
    }
};

currentActivity.registerReceiver(mGpsSwitchStateReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));

我关注的参考文献:

How to trigger broadcast receiver when gps is turn on/off?

Android Quick Settings notifications?

Changing Location Settings

【问题讨论】:

    标签: java android location


    【解决方案1】:

    我遇到了同样的问题。 这对我有用

    intentFilter.addAction(android.location.LocationManager.PROVIDERS_CHANGED_ACTION);
    

    不要与

    混淆
    Intent.ACTION_PROVIDER_CHANGED
    

    【讨论】:

    • 完美运行。谢谢你。很抱歉花了这么长时间来回答,但那一刻我决定把这个问题留到以后。现在我终于找到了一些时间来解决它。
    • 您是否知道如何识别用户何时断开网络连接,无论是通过停用他的 wifi 还是通过他的移动数据?
    • @LuísHenriques 没有通过意图过滤器抱歉。但您可以使用ConnectivityManager.getActiveNetworkInfo 检查互联网是否可用。我希望这会有所帮助
    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2017-08-13
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多