-1

データをバックアップするためにBackupAgentを作成しましたが、GPRS / 3G / 4Gではなく、WiFiが接続されている場合にのみバックアップを有効にします。プログラムでそれを制御できますか?

4

3 に答える 3

0

Wifi状態は常に次のように知ることができます:

1)メソッドContext.getSystemService(Context.WIFI_SERVICE)を使用してWifiManagerオブジェクトを取得します

2) isWifiEnabledクラスを使用して、Wifiの状態を確認します。

携帯電話のデータ接続のステータスを知るには、
TelephonyManager tm = Context.getSystemService(Context.TELEPHONY_SERVICE)を使用してインスタンスを取得してから、

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); Account[]アカウント=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 に答える