Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,字符串常量是“android.intent.action.BOOT_COMPLETED”。我们需要在接收到该广播的时候让再发送广播让程序启动同时检测WiFi是否打开,这里没有做数据的检测,可以自己写。判断网络是否可用,可用再启动程序。网络状态发生变化的广播是“CONNECTIVITY_ACTION”,值是“android.net.conn.CONNECTIVITY_CHANGE”;
代码是这样,转别人的,谢谢
rong_wz
- /**
- * 开机启动检测和连接wifi检测
- * */
- public class BootBroadcastReceiver extends BroadcastReceiver {
- static final String ACTION = "android.intent.action.BOOT_COMPLETED";//boot
- static final String NetChange = "android.net.conn.CONNECTIVITY_CHANGE";//the net change
- private static final String TAG = "BootBroadcastReceiver";
- @Override
- public void onReceive(Context context, Intent intent) {
- ConnectivityManager connectivityManager = (ConnectivityManager) context
- .getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo wifiInfo = connectivityManager
- .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- Log.d(TAG, intent.getAction());
- if((intent.getAction().equals(ACTION) && wifiInfo.isConnected())
- ||(intent.getAction().equals(NetChange) && wifiInfo.isConnected())){
- Intent startIntent = new Intent(context,MainActivity.class);
- startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(startIntent);
- }else{
- Log.d(TAG, "no net ,do not start app");
- }
- }
- }
- <receiver android:name=".receiver.BootBroadcastReceiver" >
- <intent-filter >
- <!-- boot -->
- <action android:name="android.intent.action.BOOT_COMPLETED" />
- </intent-filter>
- <intent-filter >
- <!-- net change action -->
- <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
- </intent-filter>
- </receiver>