Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何以编程方式启用移动数据开/关_Android_Performance_Android Fragments_Android Intent_Android Activity - Fatal编程技术网

Android 如何以编程方式启用移动数据开/关

Android 如何以编程方式启用移动数据开/关,android,performance,android-fragments,android-intent,android-activity,Android,Performance,Android Fragments,Android Intent,Android Activity,在android中,如何在android 4.4及以上版本中打开和关闭移动数据。 我使用过此代码,但在android 4.4及以上版本中不起作用: private void setMobileDataEnabled(Context context, boolean enabled){ final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_

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

您无法访问android 4.4上的移动数据开/关程序。出于安全原因,该程序已被停止。相反,您可以使用对话框要求用户启用移动数据,然后如果用户启用,您可以执行任务

您无法通过编程启用internet连接,但可以检查internet连接是否存在,如果不存在,则可以告诉用户启用internet连接

下面的代码就是这样做的

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

请查看此链接:嗨,阿伦,你可以接受我的回答嗨,如果你想禁用你可以像这样使用的手机数据,TelephonyManager tm=(TelephonyManager)Android.App.Application.Context.GetSystemService(Context.TelephonyService);var tdata=tm.DataEnabled;如果(tdata)tdata=false;这不适用于Lolipop设备正如我在上面所写的,Lolipop是5.0。请仔细阅读问题的正确答案。这很好,但有没有办法不将用户发送到设置,并通过单击“确定”打开网络?不离开应用程序。@杰克:是的,这是可能的,用谷歌搜索出来:-)