2

我有一个应用程序,它有一个接收器android.intent.action.BOOT_COMPLETED并启动一个私人 VPN。但是当我收到一个android.intent.action.BOOT_COMPLETED网络还没有准备好。我该怎么做才能启动android.intent.action.BOOT_COMPLETED并等待获得网络状态?例如,我可以有一个android.intent.action.BOOT_COMPLETED但手机没有互联网连接,或者我可以有一个android.intent.action.BOOT_COMPLETED5 秒后访问互联网。

4

2 回答 2

3

您可以在 android.net.conn.CONNECTIVITY_CHANGE 操作上注册一个广播接收器。

然后检查您是否像这样连接:

public boolean isOnline(Context context) {

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
//should check null because in air plan mode it will be null
return (netInfo != null && netInfo.isConnected());

}

来源和更多信息: 用于在 android 应用程序中检查互联网连接的广播接收器

于 2015-04-22T14:04:58.550 回答
2

您始终可以在一个接收器上收听多个项目:

<receiver android:name=".ReceiverName" >
    <intent-filter >
        <action android:name="android.net.wifi.STATE_CHANGE" />
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

因此,启动后,您只需等待连接更改并执行您的操作。

于 2015-04-22T14:07:05.497 回答