我有启用和禁用这是工作好于API 8和10数据的一个解决方案,但code是不与ICS兼容,我需要一个全球性的解决方案,使同一code必须从API到8日为止Android操作系统版本兼容。
I was having one solution for enabling and disabling data that was working good in API 8 and 10, but that code was not compatible with the ICS, I need a global solution, so that the same code must be compatible from API 8 to till date Android OS versions.
使用下面的方法。它会与所有的Android版本。
Use the following method. It'll work with all android versions.
int bv = Build.VERSION.SDK_INT;
boolean turnOnDataConnection(boolean ON,Context context)
{
try{
if(bv == Build.VERSION_CODES.FROYO)
{
Method dataConnSwitchmethod;
Class<?> telephonyManagerClass;
Object ITelephonyStub;
Class<?> ITelephonyClass;
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
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 (ON) {
dataConnSwitchmethod = ITelephonyClass
.getDeclaredMethod("enableDataConnectivity");
} else {
dataConnSwitchmethod = ITelephonyClass
.getDeclaredMethod("disableDataConnectivity");
}
dataConnSwitchmethod.setAccessible(true);
dataConnSwitchmethod.invoke(ITelephonyStub);
}
else
{
//log.i("App running on Ginger bread+");
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, ON);
}
return true;
}catch(Exception e){
Log.e(TAG,"error turning on/off data");
return false;
}
}
要求的权限:
Permissions Required:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
更新:
这是Android的初始的L这仅适用于系统应用
Starting from Android L this works only for System applications
上一篇:如何结合Membershi preBOOT和Thinktecture.IdentityServer?preBOOT、Membershi、IdentityServer、Thinktecture
下一篇:LINQ的Enumerable.Count方法检查的ICollection&LT;&GT;但不为IReadOnlyCollection&其中;&GT;不为、方法、Enumerable、Count