3
私のアンドロイドで私はWIFIと3gdataトラフィックを使用して、3gデータをトグルする方法は無制限ではないので...私はクラス/私にTelephonyManager.DATA_TRAFICが表示されるコードは、enable = falseです。私はACCESS_WIFI_STATEのようなものが必要ですが、私は3gからdataTrafiicで操作することができます
私のアンドロイドで私はWIFIと3gdataトラフィックを使用して、3gデータをトグルする方法は無制限ではないので...私はクラス/私にTelephonyManager.DATA_TRAFICが表示されるコードは、enable = falseです。私はACCESS_WIFI_STATEのようなものが必要ですが、私は3gからdataTrafiicで操作することができます
あなたが実行しているアンドロイドのバージョンによって異なります。私が開発したウィジェットのTake a look at my code。
必要なコードの行は、「レガシー」メソッドがTelephonyManagerを使用する前の2.2アンドロイド版です
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED) {
isEnabled = true;
} else {
isEnabled = false;
}
です。
// 2.2+
private void setMobileDataEnabled(Context context, boolean enabled) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
final ConnectivityManager conman = (ConnectivityManager) context.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, enabled);
}
public static boolean isMobileDataConnected(Context context) {
try {
final ConnectivityManager conman = (ConnectivityManager) context.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("getMobileDataEnabled");
setMobileDataEnabledMethod.setAccessible(true);
return Boolean.valueOf(setMobileDataEnabledMethod.invoke(iConnectivityManager).toString());
} catch (Exception e) {
Log.e("NetSwitcher", e.toString());
}
return false;
}
// pre 2.2
public static void setMobileDataEnabledLegacy(Context context) {
boolean isEnabled = false;
Method dataConnSwitchmethod;
Class telephonyManagerClass;
Object ITelephonyStub;
Class ITelephonyClass;
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED) {
isEnabled = true;
} else {
isEnabled = false;
}
try {
telephonyManagerClass = Class.forName(telephonyManager.getClass().getName());
Method getITelephonyMethod = telephonyManagerClass.getDeclaredMethod("getITelephony");
getITelephonyMethod.setAccessible(true);
ITelephonyStub = getITelephonyMethod.invoke(telephonyManager);
ITelephonyClass = Class.forName(ITelephonyStub.getClass().getName());
if (isEnabled) {
dataConnSwitchmethod = ITelephonyClass
.getDeclaredMethod("disableDataConnectivity");
} else {
dataConnSwitchmethod = ITelephonyClass
.getDeclaredMethod("enableDataConnectivity");
}
dataConnSwitchmethod.setAccessible(true);
dataConnSwitchmethod.invoke(ITelephonyStub);
} catch (Exception e) {
Log.e("NetSwitcher", e.toString());
}
}
ファラ、NEMI DAVA 10分mislamデカOVA E TOA STO MI treba..pozz – Tony
海ダpominatは – Tony
東亜znaciデカ和mnogu BRZをporano :) –