主要参考:http://life173.blog.51cto.com/2035365/543916/

属于静态注册广播接收器的内容。可以实现程序未启动的情况下接收广播。

广播接收器更多的是扮演一种打开程序其他组件的的角色,比如创建一条状态栏通知,或者启动一个服务等。不要再onReceiver方法中过多的添加逻辑或者进行任何的耗时操作。


注意权限。其中第一行代码中例子中,需要开启对应app的开机启动权限

实现功能,开机后自动启动FirstActivity,并且不用解锁。才会 执行

Toast.makeText(arg0, "Boot Complete",Toast.LENGTH_LONG).show();

贴出源码:

主要是在配置文件中配置:

<receiverandroid:enabled="true"android:name=".BootUpReceiver"android:permission="android.permission.RECEIVE_BOOT_COMPLETED"><intent-filter><actionandroid:name="android.intent.action.BOOT_COMPLETED"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></receiver>

及增加权限:<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>整个源码:<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.activitytest"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19"/><uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name=".FirstActivity"android:label="thisismyfirstActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><receiverandroid:enabled="true"android:name=".BootUpReceiver"android:permission="android.permission.RECEIVE_BOOT_COMPLETED"><intent-filter><actionandroid:name="android.intent.action.BOOT_COMPLETED"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></receiver></application></manifest>

增加BootUpReceiver 类,FirstActivity就是你要开启启动的活动;

packagecom.example.activitytest;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;publicclassBootUpReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){//TODOAuto-generatedmethodstubIntenti=newIntent(context,FirstActivity.class);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);}}要启动的类:FirstActivity.javapackagecom.example.activitytest;importandroid.app.Activity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.Toast;publicclassFirstActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//requestWindowFeature(Window.FEATURE_NO_TITLE);//要使用Menu注释掉这句getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//开机不锁屏设置setContentView(R.layout.first_layout);Buttonbutton1=(Button)findViewById(R.id.button_1);button1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//Toast.makeText(FirstActivity.this,"youclickbutton1",Toast.LENGTH_SHORT).show();Intentintent=newIntent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.baidu.com"));//setData,设置data标签主要是tel,这个不能少startActivity(intent);}});}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.main,menu);returntrue;//允许创建的菜单显示出来}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseR.id.add_item:Toast.makeText(this,"youclickadd",Toast.LENGTH_SHORT).show();break;caseR.id.remove_item:Toast.makeText(this,"youclickremove",Toast.LENGTH_SHORT).show();break;default:break;}returntrue;}}

PS: 开启启动这个app,需要解屏后稍等一会,才能启动;启动APP需要一定时间。

其实还可以在开机启动时设置不锁屏。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//开机不锁屏 设置 放在这个前面。

setContentView(R.layout.first_layout);