我是一名 android 开发人员,我想3G connection
通过我的应用程序中的按钮打开或关闭运行。
问问题
2720 次
1 回答
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 或某些 3rd-party 软件,它可能会变得棘手。
于 2013-05-14T20:35:29.727 回答