-1

我编写了一个 BackupAgent 来备份我的数据,但我只想在连接 WiFi 而不是 GPRS/3G/4G 时启用备份。我可以以编程方式控制它吗?

4

3 回答 3

0

Wifi 状态始终可以如下所示:

1) 使用 Context.getSystemService(Context.WIFI_SERVICE) 方法获取 WifiManager 对象

2) 使用 isWifiEnabled类了解 Wifi 的状态。

要知道手机数据连接的状态,使用
TelephonyManager tm = Context.getSystemService(Context.TELEPHONY_SERVICE) 获取一个Instance,然后使用

Tm值。getDataState了解数据连接的状态。

现在,当 getDataState 的返回值为 TelephonyManager.DATA_DISCONNECTED 且 isWifiEnabled 的返回值为 true 时运行 BackupAgent。

为了能够在连接(3G/WiFi)断开后禁用备份,创建一个新方法如下:

enter code here  
protected void checkMyConnectivity()


{

if (tm.getDataState ==  TelephonyManager.DATA_DISCONNECTED && wm.isWifiEnabled==true)

return true;

else

return false;

}`

并在您想要检查连接性时使用此代码,如果返回值为 false,请停止上传。如果您想非常具体,请改用 while 循环。

于 2012-12-15T10:06:52.920 回答
0

1) 每当您没有使用 Wifi 服务的 wifi 时,如果没有 wifi,则以编程方式从手机设置中取消帐户

AccountManager accountManager = AccountManager.get(this); 帐户[] 帐户 = accountManager.getAccounts(); Log.i(TAG,"账户大小"+accounts.length); for(Account acc:accounts){ Log.d(TAG,"acc name "+acc.name+" acc type "+acc.type); boolean isSync = ContentResolver.isSyncActive(acc, ContactsContract.Settings.CONTENT_URI.toString()); Log.d(在此处输入代码`TAG,"isSync "+isSync); cr.setSyncAutomatically(acc, , false);// 此处取消同步邮件帐户 }

于 2012-12-27T05:47:35.077 回答
0
protected boolean isWifiConnectivity() {
    TelephonyManager telephonyManager = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
    WifiManager wifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
    return (telephonyManager.getDataState() == TelephonyManager.DATA_DISCONNECTED && wifiManager.isWifiEnabled());
}
于 2015-02-13T09:54:53.703 回答