データをバックアップするためにBackupAgentを作成しましたが、GPRS / 3G / 4Gではなく、WiFiが接続されている場合にのみバックアップを有効にします。プログラムでそれを制御できますか?
3 に答える
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ループを使用してください。
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);//ここではメールアカウントの同期を解除しています}
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());
}