在我的应用中,我想将用户导航到他/她能够激活设备移动数据的设置 我想使用意图来解决这个问题,但我的问题是移动数据选项在Exmaple的设备设置中的不同页面中,代码在Sony Xperia Z2设备中工作正常(使用android 5.1.1)
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
但是在其他一些设备中,例如sony experia SP(android 4.3)和samsung S4(android 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用户必须退一步! 我该如何解决这个问题?选择哪种方式? (我希望解释问题清楚)
答案 0 :(得分:1)
尝试这种方式:
同时添加权限
<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);
}
对于棒棒糖及以上:
The setMobileDataEnabled method is no longer callable as of Android L and later