ネットワーク接続の変更をリッスンできるブロードキャスト レシーバーを使用します。デバイスがインターネットに接続されているか、ConnectivityManager を使用していないかを確認します。デバイスがインターネットに接続されている場合は、タスクをスケジュールします。
放送受信機を使用するには。次の行をマニフェストに追加します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name="yourpackage.ConnectivityReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
リスナー クラス:
package yourpackage;
public class ConnectivityReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
switch (action) {
case ConnectivityManager.CONNECTIVITY_ACTION:
ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
//start schedule
}else{
//stop schedule
}
break;
}
}}