android系统在运行的各个环节都会触发相应的事件或者发送相应的广播告诉系统“某某”事件已经触发或者“某某”动作已经完成。例如:接收电话或者短信,开机启动完成,电量不足,等等。
所以既然我们要让程序在系统启动完成时自动运行,那么只需要监听系统启动完成后所发送的广播然后再广播当中启动相应的Activity即可。闲话就不多说了,来一起看看代码吧:
首先是主Activity,在这个Activity中什么都不需要做,只要程序运行后能显示一些简单的内容就行了。
package com.yw.demo; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
最主要的动作是在广播接收器重完成的,目的就是启动当前程序
package com.yw.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /** * 监听开机启动的广播 * @author USER * */ public class StartingUpBroadCastReceiver extends BroadcastReceiver{ static final String INTENT_ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { //判断是否是开机启动动作 if(intent.getAction().equals(INTENT_ACTION)){ //以下代码就是启动本应用程序的代码 Intent intentStartActivity = new Intent(); intentStartActivity.setClass(context, MainActivity.class); intentStartActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intentStartActivity); } } }
最后则是主配置文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yw.demo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 注册广播接收器,用于接收开机启动完成的广播 --> <receiver android:name=".StartingUpBroadCastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> <!-- 开机启动完成权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> </manifest>