如何在android中关闭数据连接?
Posted
技术标签:
【中文标题】如何在android中关闭数据连接?【英文标题】:How can i turn off data connection in android? 【发布时间】:2013-08-05 14:26:13 【问题描述】:我有一个可以关闭 wifi 的 BroadcastReceiver..同样我也想关闭数据连接..我该怎么做?这是代码
public static class LowBatteryReceiver extends BroadcastReceiver
public void onReceive(Context context, Intent intent)
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
wifi = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
Toast.makeText(context, "Turning off wifi..", Toast.LENGTH_LONG).show();
谢谢
【问题讨论】:
【参考方案1】:您必须使用此权限
<uses-permission android:name="android.permission.BATTERY_STATS" />
在您的 AndroidManifest.xml 中
<receiver android:name=".LowBatteryReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
还有你的 LowBatteryReceiver
/** FOR CLOSE WIFI **/
public static class LowBatteryReceiver extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
String intentAction = intent.getAction();
if(intentAction.equals(Intent.ACTION_BATTERY_LOW))
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
Toast.makeText(context, "Turning off wifi..", Toast.LENGTH_LONG).show();
/** FOR CLOSE MOBILE DATA **/
public void onReceive(Context context, Intent intent)
String intentAction = intent.getAction();
if(intentAction.equals(Intent.ACTION_BATTERY_LOW))
try
ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Class<?> conmanClass = Class.forName(conman.getClass().getName());
Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
Object iConnectivityManager = iConnectivityManagerField.get(conman);
Class<?> iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, false);
catch (Exception e)
e.printStackTrace();
【讨论】:
好吧,我想要的也是关闭 3g 数据连接。不只是 Wi-Fi..我该怎么做? 谢谢!!只有两个问题..是否可以在wifi连接的onReceive
中插入移动数据代码?它要求我导入Field
,但我不知道是哪个..
用于导入归档:导入 java.lang.reflect.Field;我不明白你的第一个问题?
抱歉,现在没关系了..所以,现在在 BATTERY_LOW 上,数据连接会关闭,对吧?
好的,它成功了 :) 我尝试从 BATTERY_LOW 更改为 BOOT_COMPLETED 并且成功了 :) 谢谢!以上是关于如何在android中关闭数据连接?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Amazon RDS 中关闭与 Postgres DB 的空闲连接