有意启用移动数据(Lte/3g/gprs)



在我的应用程序中,我想将用户导航到他/她能够激活设备移动数据的设置
我想使用意向来解决这个问题,但我的问题是,移动数据选项在Exmaple的设备设置中的不同页面中。下面的代码在索尼Xperia Z2设备中工作良好(与安卓5.1.1)

startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));  

但在其他一些设备中,如索尼experia SP(安卓4.3)和三星S4(安卓5.0.1),用户必须再选择一步,然后转到移动网络页面。我可以用这个代码解决这个问题:(直接进入移动网络)

Intent intent=new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);
ComponentName cn = new ComponentName("com.android.phone","com.android.phone.Settings");
intent.setComponent(cn);
startActivity(intent);

但是使用z2的用户必须后退一步!我该如何解决此问题?选择哪条路?(我希望能把问题解释清楚)

试试这个方法:

还添加权限

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

启用移动/3g数据的方法:

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 L和更高版本的开始,setMobileDataEnabled方法不再可调用

最新更新