android - 启用/禁用移动数据的监听器(未连接或断开连接)

标签 android

我测试了一些 Action (见下文)。

ConnectivityManager.CONNECTIVITY_ACTION
WifiManager.NETWORK_STATE_CHANGED_ACTION
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE (it is not actually action)
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE (it is not actually action)

但他们只听状态(连接或断开连接)。

wifi断开时,可以监听(开启移动数据->连接->广播->监听)

wifi连上后无法监听(开启移动数据->连接性不变!)

我需要移动数据设置是否启用

我可以监听移动数据启用或禁用事件吗?

最佳答案

虽然系统没有为此进行广播,但我们实际上可以使用 ContentObserver 来获取用户切换移动数据设置的通知。

例如:

ContentObserver mObserver = new ContentObserver(new Handler()) {
    @Override
    public void onChange(boolean selfChange, Uri uri) {
         // Retrieve mobile data value here and perform necessary actions
    }
};

...

Uri mobileDataSettingUri = Settings.Secure.getUriFor("mobile_data");
getApplicationContext()
                .getContentResolver()
                .registerContentObserver(mobileDataSettingUri, true,
                        observer);

不要忘记适当注销观察者!例如

getContentResolver().unregisterContentObserver(mObserver);

关于android - 启用/禁用移动数据的监听器(未连接或断开连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896752/

相关文章:

android - 为什么新地方 sdk 客户端兼容性脚本给我 - "Access is denied"

java - 将不同的图像放在 View /适配器中

java - Android 中针对 Salesforce Web 服务的 SSL 证书问题

android - 线程不工作

android - 将数据发送到父 Activity onBackPressed

android - 如何检查 Android 中存在的文件没有损坏?

android - 如何避免不推荐使用的方法并保持向后兼容性?

android - 在 android API 10 中设置 Spinner 模式

java - Android 服务可以有多个权限吗?

android - 如何使用android-ndk?