您的位置:首页 > 移动开发 > Android开发

Android 程序的开机启动,监测是否联网,联网再启动

2018-01-04 14:57 393 查看
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");  

}  

}  

}  

在清单配置文件,也就是Android Manifest中设置 就OK了

<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>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: