【问题标题】:How to turn 3G on and off in Android [duplicate]如何在Android中打开和关闭3G [重复]
【发布时间】:2013-05-14 20:12:32
【问题描述】:

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

【问题讨论】:

  • 该线程没有提供最新的答案。那里给出的解决方案在 2.2 之后停止工作和/或需要 root 访问权限。
  • 添加了对可能解决方法的描述,作为下面的答案。它在我的一个应用程序中运行良好。

标签: android android-internet


【解决方案1】:

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

我找到了一个简单但有点受限的解决方法:仅当 WiFi 关闭时,3G 连接才处于活动状态,因此每次要初始化网络连接时,都必须检查 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 或某些第 3 方软件,它可能会变得很棘手。

【讨论】:

  • 我的目标是创建一个按钮,用户可以通过它打开互联网!我没有找到解决办法
  • 我已扩展示例以包含示例活动。它假设您在布局文件my_layout.xml 中定义了一个按钮,并且该按钮的ID 是button3g。您需要将所有需要网络的代码封装在简单的if 块中,检查enable3g 是否设置为true,这是通过您的按钮完成的,或者WiFi 可用。
  • 我应该在清单中添加一些东西吗?
  • 是的,您需要ACCESS_NETWORK_STATE 权限(抱歉,我之前忘记添加了),当然还有您的活动声明。编辑了答案。
  • 如果您觉得这个答案有用,请您点赞吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 2020-11-02
  • 1970-01-01
  • 2010-10-20
  • 2014-09-25
  • 2011-09-19
相关资源
最近更新 更多