gpt4 book ai didi

android - 监控用户何时启用/禁用移动数据

转载 作者:搜寻专家 更新时间:2023-11-01 08:53:46 26 4
gpt4 key购买 nike

我正在构建一个应用程序,我想在用户在其设备上启用或禁用移动数据使用时在该应用程序上进行捕获。

我阅读了有关使用 android.net.conn.CONNECTIVITY_CHANGE 的信息监控这些变化,但后来我在这里遇到了各种帖子和问题,这些帖子和问题都说这个 wouldn't work ,并且大多数答案建议使用反射。

这让我相信,当用户更改我可以使用的移动数据状态时,不会触发特定事件。

是否可以创建自定义事件来处理它?如果不是,您认为监控移动数据状态的最佳做法是什么?

提前致谢

最佳答案

当用户更改启用移动数据的设置时,不会广播任何事件。执行此操作的唯一方法(除了监听 CONNECTIVITY_CHANGE 事件,如您所述)是定期检查启用移动数据设置的状态。但是,如果您过于频繁地这样做,只会耗尽电池电量。

如果您要创建自己的自定义 ROM,您当然可以将代码添加到“设置”应用程序,以便在启用/禁用移动数据时广播事件。


EDIT 添加了一种在修改设置时获取通知的方法

实际上,我已经找到了一种方法来做到这一点。每当更改移动数据设置时,您都会收到通知。遗憾的是,唯一的方法是在任何设置 更改时注册通知。但是,这种情况不会经常发生,至少您不必经常轮询并耗尽电池电量。您要做的是在 Secure 设置上注册一个 ContentObserver,如下所示:

contentObserver = new SettingsObserver();
getApplicationContext().getContentResolver().registerContentObserver(
Settings.Secure.CONTENT_URI, true, contentObserver);

您应该像这样实现 SettingsObserver:

public class SettingsObserver extends ContentObserver {

public SettingsObserver() {
super(new Handler());
}

@Override
public void onChange(boolean selfChange) {
// Here you want to check the state of mobileDataEnabled using reflection to
// see if it has changed - see https://stackoverflow.com/a/12864897/769265
}
}

参见 https://stackoverflow.com/a/12864897/769265有关如何确定移动数据设置的当前状态的更多信息。

关于android - 监控用户何时启用/禁用移动数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20790483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com