如何在Android中打开和关闭3G

时间:2013-05-14 20:12:32

标签: android android-internet

我是一名Android开发人员,我想通过我的应用程序中的按钮打开或关闭3G connection

1 个答案:

答案 0 :(得分:1)

我最近对此主题进行了广泛的搜索,并且必须告诉现有的Android版本上没有这个问题的简单解决方案,除非您以root身份运行您的应用。

我发现了一个简单但有限的解决方法:3G连接仅在WiFi关闭时才有效,因此每次要初始化网络连接时,都必须检查WiFi是否已启动并已连接。以下是您的示例活动的一些代码:

public class MyActivity extends Activity {
    boolean enable3g = false;

    public void onCreate() {
        setContentView(R.layout.my_layout);
        Button enable3gButton = (Button) findViewById(R.id.button3g);
        enable3gButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                MyActivity.this.enable3g = !MyActivity.this.enable3g;
            }
        });

        if (enable3g || isWifiConnected()) {
            // do your stuff that requires network access here
        }



    }
    public boolean isWifiConnected() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        return connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
    }
}

在AndroidManifest中,您需要ACCESS_NETWORK_STATE权限(当然还有活动声明):

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application .....>
    <activity android:name="MyActivity" />

如果未连接WiFi(isWifiConnected()方法返回false),请勿开始连接。现有的TCP连接无法从一个网络“跳转”到另一个网络,因此如果WiFi连接中断,它只会超时,从而使解决方案非常安全。

限制是,您必须能够控制应用程序的连接。如果您使用的是WebView或某些第三方软件,则可能会变得棘手。