안녕하세요 : 나는이 코드를 찾을 곳
private void setMobileDataEnabled(Context context, boolean enabled) {
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);
}
링크! 각 버튼의 onClickListener 내부에서 함수를 호출하고 함수가 별도의 스레드에서 실행되도록해야합니다.
최종 ConnectivityManager의 CONMAN : 시도
btOff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"Trying to switch off 3G!",Toast.LENGTH_SHORT).show();
(new Thread(new Runnable() {
@Override
public void run() {
setMobileDataEnabled(MainActivity.this,false);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Switched OFF 3G!", Toast.LENGTH_SHORT).show();
}
});
}
})).start();
}
});
* 함수에 ... 캐치 조항을 추가
btOn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"Trying to switch on 3G!",Toast.LENGTH_SHORT).show();
(new Thread(new Runnable() {
@Override
public void run() {
setMobileDataEnabled(MainActivity.this,true);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Switched ON 3G!", Toast.LENGTH_SHORT).show();
}
});
}
})).start();
}
});
버튼 끄기 : 버튼을
;
conman = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
final Class conmanClass;
try {
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);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
나는 귀하의 질문에 대한 답변을드립니다.
이 코드 조각을 어디에서 찾을 수 있습니까? – Raptor
나는 그것을 여기에서 찾았다 : http://stackoverflow.com/questions/12535101/how-can-i-turn-off-3g-data-programmatically-on-android –
당신의 질문은 3G를 가능하게하는 방법에 관한 것이 아니라 버튼에 함수를 할당하십시오. – Raptor