设置使用3G数据功能:
从源代码看到隐藏的API(ConnectivityManager.java):
/**
* Sets the persisted value for enabling/disabling Mobile data.
*
* @param enabled Whether the mobile data connection should be
* used or not.
* @hide
*/
public void setMobileDataEnabled(boolean enabled) {
try {
mService.setMobileDataEnabled(enabled);
} catch (RemoteException e) {
}
}
通过java reflection功能来实现该功能,即调用
mService.setMobileDataEnabled(enabled);
代码如下:
private void EnableMobileData(boolean enable)
{
ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
try
{
// Get mService
// android.net.ConnectivityManager.mService;
Field field = Class.forName(ConnectivityManager.class.getName())
.getDeclaredField("mService");
field.setAccessible(true);
/*
// 权限修饰符
int mo = field.getModifiers();
String priv = Modifier.toString(mo);
// 属性类型
Class<?> type = field.getType();
Log.i(TAG, priv + " " + type.getName() + " " + field.getName()
+ ";");
*/
// get Object of mService
Object obj = field.get(connectivitymanager);// connectivitymanager.mService
// get IConnectivityManager class
Class myClass = Class.forName(obj.getClass().getName());
Log.i(TAG, "class3:" &