Androidはネットワークの変化を傍受してページをリフレッシュします
4069 ワード
1.まずAndroidManifest.xmlに関連する権限を追加し、receiverのintent-filterを追加します.
2.傍受ネットワークの変化
このコードはreceiverにあるのでstartActivity用に新規intentを作成する場合、FLAGはFLAG_ACTIVITY_SINGLE_TOPまたはFLAG_ACTIVITY_CLEAR_TOPは無効です.エラー:Calling startActivity()from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag
3.adbで放送テストを送る~
(ADB放送、Activity/Serviceオフ)
"android.permission.ACCESS_NETWORK_STATE" />
...
"true"
android:exported="true"
android:name=".receiver.GlobalReceiver">
"android.intent.action.BOOT_COMPLETED"/>
"android.net.conn.CONNECTIVITY_CHANGE"/>
...
2.傍受ネットワークの変化
public class GlobalReceiver extends BroadcastReceiver {
private final static String ACTION_NETWORK = "android.net.conn.CONNECTIVITY_CHANGE";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_NETWORK)) {
// , .
refreshWhenNetChanged(context);
}
}
private void refreshWhenNetChanged(Context context){
boolean isOnline = false;
ConnectivityManager connectManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeInfo = connectManager.getActiveNetworkInfo();
// , ConnectivityManager.TYPE_WIFI, WiFi .TYPE_ , .
if (activeInfo != null) {
isOnline = activeInfo.isConnected(); //
}
if (isOnline) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
String runningActivity = activityManager.getRunningTasks(1).get(0).topActivity.getClassName();
// Activity
String contextActivity = runningActivity.substring(runningActivity.lastIndexOf(".") + 1);
Log.i(TAG, "contextActivity:" + contextActivity);
//
Intent intent = new Intent(context, xxx.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
}
}
}
このコードはreceiverにあるのでstartActivity用に新規intentを作成する場合、FLAGはFLAG_ACTIVITY_SINGLE_TOPまたはFLAG_ACTIVITY_CLEAR_TOPは無効です.エラー:Calling startActivity()from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag
3.adbで放送テストを送る~
adb shell am broadcast -a android.net.conn.CONNECTIVITY_CHANGE
(ADB放送、Activity/Serviceオフ)