package com.example.test;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
public Button open3g;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
open3g=(Button)findViewById(R.id.open3G);
open3g.setOnClickListener(new open3GClickListener());
}
class open3GClickListener implements OnClickListener{
@Override
public void onClick(View v) {
setMobileNetEnable();
Toast.makeText(MainActivity.this,"hello", 1).show();
}
}
////////
/** * 移动网络开关 */
// private void toggleMobileData( boolean enabled) {
// ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//
// Class> conMgrClass = null;
// // ConnectivityManager类
// Field iConMgrField = null;
// // ConnectivityManager类中的字段
// Object iConMgr = null;
// // IConnectivityManager类的引用
// Class> iConMgrClass = null;
// // IConnectivityManager类
// Method setMobileDataEnabledMethod = null;
// // setMobileDataEnabled方法
// try {
// // 取得ConnectivityManager类
// conMgrClass = Class.forName(conMgr.getClass().getName());
// // 取得ConnectivityManager类中的对象mService
// iConMgrField = conMgrClass.getDeclaredField("mService");
// // 设置mService可访问
// iConMgrField.setAccessible(true);
// // 取得mService的实例化类IConnectivityManager
// iConMgr = iConMgrField.get(conMgr);
// // 取得IConnectivityManager类
// iConMgrClass = Class.forName(iConMgr.getClass().getName());
// // 取得IConnectivityManager类中的setMobileDataEnabled(boolean)方法
// setMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
// // 设置setMobileDataEnabled方法可访问
// setMobileDataEnabledMethod.setAccessible(true);
// // 调用setMobileDataEnabled方法
// setMobileDataEnabledMethod.invoke(iConMgr, enabled);
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// }
// catch (NoSuchFieldException e) {
// e.printStackTrace();
// }
// catch (SecurityException e) {
// e.printStackTrace();
// }
// catch (NoSuchMethodException e) {
// e.printStackTrace();
// }
// catch (IllegalArgumentException e) {
// e.printStackTrace();
// }
// catch (IllegalAccessException e) {
// e.printStackTrace();
// }
// catch (InvocationTargetException e) {
// e.printStackTrace();
// }
//
// }
///////
//
public final void setMobileNetEnable(){
ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Object[] arg = null;
try {
boolean isMobileDataEnable = invokeMethod("getMobileDataEnabled", arg);
if(!isMobileDataEnable){
invokeBooleanArgMethod("setMobileDataEnabled", true);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean invokeMethod(String methodName,
Object[] arg) throws Exception {
ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Class ownerClass = mConnectivityManager.getClass();
Class[] argsClass = null;
if (arg != null) {
argsClass = new Class[1];
argsClass[0] = arg.getClass();
}
Method method = ownerClass.getMethod(methodName, argsClass);
Boolean isOpen = (Boolean) method.invoke(mConnectivityManager, arg);
return isOpen;
}
public Object invokeBooleanArgMethod(String methodName,
boolean value) throws Exception {
ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Class ownerClass = mConnectivityManager.getClass();
Class[] argsClass = new Class[1];
argsClass[0]=boolean.class;
Method method = ownerClass.getMethod(methodName,argsClass);
return method.invoke(mConnectivityManager, value);
}
//
}
Test.rar