저는 PreferenceActivity가 있는데 여기에는 CheckboxPreference
이 있습니다. CheckboxPreference를 클릭하여 모바일 데이터를 사용 또는 사용하지 않도록 설정 했으므로이 코드를 작성했습니다.CheckBoxPreference를 사용하여 모바일 데이터를 사용 또는 사용하지 않도록 설정 하시겠습니까?
//Outside of Methods
void turnData(boolean ON) throws Exception
{
final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final java.lang.reflect.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);
}
//In the onCreate
final boolean o = false;
boolean mobileDataEnabled = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
try {
Class cmClass = Class.forName(cm.getClass().getName());
Method method = cmClass.getDeclaredMethod("getMobileDataEnabled");
method.setAccessible(true);
mobileDataEnabled = (Boolean)method.invoke(cm);
} catch (Exception e) {
}
if(mobileDataEnabled) {
((CheckBoxPreference)Data).setChecked(true);
//The Mobile Data are enabled
Data.setSummary("Mobile Data enabled");
dati = true;
}
else {
//The Mobile Data are disabled
((CheckBoxPreference)Data).setChecked(false);
try {
turnData(mobileDataEnabled);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Data.setSummary("Mobile Data disabled");
dati = false;
}
Data.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
if (dati==true) {
Data.setSummary("Mobile Data enabled");
dati = false;
}
else if (dati==false){
try {
//The problem is here
//What should I put in the parentheses?
turnData(o);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Data.setSummary("Mobile Data disabled");
dati = true;
}
return false;
}
});
코드의 주석에서 언급 한 것처럼 문제는 메서드를 호출 할 때 괄호 안에 무엇을 넣어야하는지입니다. 질문이 사소한 것 같으면 사과드립니다 **.하지만 나와 함께 견뎌주십시오. 나는 초급이다.
http://stackoverflow.com/questions/11662978/how-to-provide-option-to-select-wi-fi-or-gprs-for-network-connectivity-in이 체크 아웃 -androi/11663173 # 11663173 – JiTHiN
모바일 데이터를 활성화/비활성화하는 코드를 메서드에 넣고 해당 메서드를 onPreferenceClick 메서드에서 호출합니다. – Sajmon
안녕하십니까. 응답 해 주셔서 감사합니다. 내 질문을 업데이 트하고 제안대로 할려고했는데 문제가 생겼어. 내가 도와 줄 수 있니? 미리 감사드립니다. –