gpt4 book ai didi

android - 移动数据的切换按钮

转载 作者:行者123 更新时间:2023-11-30 03:26:48 26 4
gpt4 key购买 nike

在我的应用程序中,我有两个切换按钮,一个用于 wifi,另一个用于移动数据。当应用程序启动时,如果我的 WiFi 已打开,则切换按钮会打开。但是,如果我的移动数据已打开,切换按钮不会显示,它仍然是灰色的(无论 WiFi 发生什么情况)。当我按下它时,它变成绿色并且我的移动数据仍然开启...知道为什么吗?

gprs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
try {
turnData(isChecked); //Klasa za ukljucivanje gprsa
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

});

和移动数据类

void turnData(boolean ON) throws Exception {
Log.i("version:", "Found Gingerbread+");
final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, ON);
}

最佳答案

为什么要为此使用反射?如果我是 Google(我不是),我会在 API 中加入保护措施,这样人们就无法在低级系统中使用对 F 的反射。允许反射这种东西会使系统变得如此脆弱,以至于没有人能够使用它。

如果您查看 source tree您会看到 IConnectivityManager 甚至不是一个 java 类,它是一个 aidl 资源,这意味着它可能由 native 代码 (C/C++) 支持,所以我不知道反射会在那里工作。

如果您查看您尝试访问的 setMobileDataEnabled 方法,它在 ConnectivityManager 中是公开的来源。

/**
* Sets the persisted value for enabling/disabling Mobile data.
*
* @param enabled Whether the user wants the mobile data connection used
* or not.
* @hide
*/
public void setMobileDataEnabled(boolean enabled) {
try {
mService.setMobileDataEnabled(enabled);
} catch (RemoteException e) {
}
}

我没用过它,但为什么要尝试破解底层服务而不仅仅是使用它呢?

关于android - 移动数据的切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18104582/

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