【问题标题】:How to enable mobile data on/off programmatically [duplicate]如何以编程方式启用/关闭移动数据[重复]
【发布时间】:2018-01-14 01:58:10
【问题描述】:

在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);
}

【问题讨论】:

  • 嗨阿伦,你可以接受我的回答
  • 嗨,如果你想禁用蜂窝数据,你可以像这样使用,TelephonyManager tm = (TelephonyManager)Android.App.Application.Context.GetSystemService(Context.TelephonyService); var tdata = tm.DataEnabled;如果 (tdata) tdata = false;

标签: android performance android-fragments android-intent android-activity


【解决方案1】:

您无法在 android 4.4 上以编程方式打开/关闭移动数据。出于安全原因,它已被停止,而是您可以使用对话框询问用户启用移动数据,然后如果他启用,您就可以完成您的任务。

【讨论】:

  • 这不适用于 Lolipop 设备
  • 以上就是我写的,Lollipop是5.0,请仔细阅读
  • 完美回答问题
【解决方案2】:

您不能以编程方式启用互联网连接,但您可以检查是否存在互联网连接,如果不存在,则可以告诉用户启用互联网连接。

下面的代码就是这样做的。

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();
}

【讨论】:

  • 很好,但是有什么办法不让用户进入设置,点击确定网络就会打开?不离开应用程序。
  • @Jack 是的,有可能,谷歌一下 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多