在android中如何在android 4.4及以上版本中启用和关闭移动数据。 我已经使用过这段代码,但它在Android 4.4及以上版本中无效:
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);
}
答案 0 :(得分:10)
你无法在android 4.4以上的程序上打开/关闭移动数据。出于安全原因,它已被停止,相反,你可以要求用户使用对话框启用移动数据,然后如果他启用你就可以完成你的任务。
答案 1 :(得分:4)
您无法以编程方式启用互联网连接,但您可以检查是否存在互联网连接,如果不存在,则可以告诉用户启用互联网连接。
下面的代码就是这样。
protected void createNetErrorDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("You need internet connection for this app. Please turn on mobile network or Wi-Fi in Settings.")
.setTitle("Unable to connect")
.setCancelable(false)
.setPositiveButton("Settings",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent i = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
startActivity(i);
}
}
)
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
}
);
AlertDialog alert = builder.create();
alert.show();
}