我想創建這樣的按鈕(如果移動網絡已打開它是綠色的,當它是關閉的,它是灰色的):Android。如何讓移動互聯網(數據網絡)開啓/關閉狀態?
我試圖用這個方法來識別狀態:
public Boolean isDataNetworkEnabled() {
ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
return true;
}
if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
return false;
}
return false;
}
它總是返回值'false'。即使在移動網絡打開之後。其實,如何識別移動網絡的狀態呢?
PS。我不是在問如何打開/關閉移動網絡,我是在問狀態。我已經找到了如何開啓/關閉:
try {
Method dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
if (!isDataNetworkEnabled()) {
dataMtd.invoke(dataManager, true);
ivDataNetwork.setImageResource(R.drawable.ic_data_usage_black_48dp);
Toast.makeText(context, "Data network turned on", Toast.LENGTH_SHORT).show();
} else {
dataMtd.invoke(dataManager, false);
ivDataNetwork.setImageResource(R.drawable.ic_data_usage_grey600_48dp);
Toast.makeText(context, "Data network turned off", Toast.LENGTH_SHORT).show();
}
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
請確保您有<使用許可權的android:NAME = 「android.permission.ACCESS_NETWORK_STATE」/>在您的清單。 – 2015-04-03 18:07:36
@Ashton,我有這些權限: uses-permission> <使用權限> <使用權限android:name =「android.permission.INTERNET」/> <使用權限android:name =「android.permission.ACCESS_NETWORK_STATE」/> <使用權限android:name =「 android.permission.CHANGE_NETWORK_STATE「/> –
2015-04-03 18:08:32