首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法通过android应用程序切换网络?

有没有办法通过android应用程序切换网络?
EN

Stack Overflow用户
提问于 2019-12-17 17:04:37
回答 2查看 70关注 0票数 0

我的要求是通过运营商在android中验证手机号码。我可以在单个SIM卡手机的情况下这样做,但问题是双SIM卡。要求切换手机数据,通过运营商验证手机号码。

任何帮助都是非常值得感谢的。

EN

回答 2

Stack Overflow用户

发布于 2019-12-17 17:21:14

我不知道如何准确地关闭移动数据,但下面的代码正确地禁用了wifi。

放入清单

代码语言:javascript
复制
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 

WifiManager wifiManager = 
   (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);  // true -> enable

为移动数据定义的函数

代码语言:javascript
复制
private void setMobileConnectionEnabled(Context context, boolean enabled) {
       final ConnectivityManager mConnectivityManager = (ConnectivityManager)  context.getSystemService(Context.CONNECTIVITY_SERVICE);
       final Class mClass = Class.forName(mConnectivityManager.getClass().getName());
       final Field mField = mClass.getDeclaredField("mService");
       mField.setAccessible(true);
       final Object mObject = mField.get(mConnectivityManager);
       final Class mConnectivityManagerClass =  Class.forName(mObject.getClass().getName());
       final Method setMobileDataEnabledMethod = mConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
       setMobileDataEnabledMethod.setAccessible(true);

       setMobileDataEnabledMethod.invoke(mObject, enabled);
}

如果上述功能不起作用,请尝试使用Intent切换移动数据

代码语言:javascript
复制
Intent intent = new Intent();
intent.setClassName("com.android.settings",
      "com.android.settings.Settings$DataUsageSummaryActivity");
startActivity(intent);
票数 0
EN

Stack Overflow用户

发布于 2019-12-17 17:36:14

你可以试试这个

代码语言:javascript
复制
public void mobiledataenable(boolean enabled) {
    try { 
        final ConnectivityManager conman = (ConnectivityManager)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);
    }
    catch (Exception e) {
        e.printStackTrace();
    }     
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59370772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档