Android 的开机自启动是通过捕捉开机结束的广播来实现的,手机的启动完后会给出一个BroadcastReceiver,在自己的程序中捕捉即可。

AutoBootReceiver.java 文件:

package com.ldq.auto.boot;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class AutoBootReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {Log.i("------", "AutoBootReceiver auto boot");Intent in = new Intent(context, ExAutoBoot.class);in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//添加Flags必不可少,否则报错context.startActivity(in);}}}

ExAutoBoot.java 文件:

package com.ldq.auto.boot;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class ExAutoBoot extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Log.i("------","ExAutoBoot auto boot");    }}

AndroidManifest.xml 文件:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ldq.auto.boot" android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".ExAutoBoot" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name="AutoBootReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"></action></intent-filter></receiver></application><uses-sdk android:minSdkVersion="4" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission></manifest> 

教你开启自启动程序! 在电脑的操作系统中都能在电脑开机后自启动一些程序,在Android平台也是可以的,那么我们如何才能做到这样的效果呢。
1、需要BroadcastReceiver
2、使用interfilter中的action:android.intent.action.BOOT_COMPLETED //当启动手机系统启动完成后就启动此Receiver

功能:当手机系统启动完成后,直接启动某个程序或者Activity,这里直接启动某个程序

一下是代码分析:

AndroidManifest.xml文件内容:

# <?xml version="1.0" encoding="utf-8"?># <manifest xmlns:android="http://schemas.android.com/apk/res/android"#       package="cc.androidos.sms"#       android:versionCode="1"#       android:versionName="1.0.0">#     <application android:icon="@drawable/icon" android:label="@string/app_name">#         <activity android:name=".StartUp"#                   android:label="@string/app_name">#             <intent-filter>#                 <action android:name="android.intent.action.MAIN" />#                 <category android:name="android.intent.category.LAUNCHER" />#             </intent-filter>#         </activity>#        #         <receiver android:name=".BootReceiver">#         <intent-filter>#          <action android:name="android.intent.action.BOOT_COMPLETED" />#         </intent-filter>#         </receiver>#         <service android:name=".StartService"/>#     </application># </manifest> 

要启动的Activity类:

# package cc.androidos.sms;# import android.app.Activity;# import android.os.Bundle;# public class StartUp extends Activity {#     /** Called when the activity is first created. */#     @Override#     public void onCreate(Bundle savedInstanceState) {#         super.onCreate(savedInstanceState);#         setContentView(R.layout.main);#     }# } 

Receiver类:系统启动后接受信息的类

# package cc.androidos.sms;# import android.app.Activity;# import android.app.PendingIntent;# import android.content.BroadcastReceiver;# import android.content.Context;# import android.content.Intent;# import android.net.Uri;# import android.util.Log;# public class BootReceiver extends BroadcastReceiver# {#     @Override#     public void onReceive( Context context, Intent intent )#     {#         if(intent.getAction().equals( Intent.ACTION_BOOT_COMPLETED )){#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );#             Intent i = new Intent(context,StartUp.class);#             i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );#                                             //使用Receiver直接启动Activity时候需要加入此flag,否则系统会出现异常#             context.startActivity( i );#           #         }#     }# } 

第一个运行完成后,关闭手机模拟器或者手机,然后启动手机操作系统,启动完成后StartUp Activity会自动运行。


流程: 系统启动完成-------》通过AndroidManifest.xml了解到系统启动完成后要启动BootReceiver -------》BootReceiver 启动StartUp Activity。

更多相关文章

  1. 解决官网下载Android(安卓)Studio速度过慢
  2. android 概述 及四大组件
  3. android TextView的字体颜色设置的多种方法
  4. Android(安卓)Android.mk && Application总结
  5. Android开发傻瓜入门-开发自己的手机短信发送程序
  6. Android(安卓)中各种XML文件的作用
  7. android sim卡 TelephonyManager类:Android手机及Sim卡状态的获取
  8. 使用air进行移动app开发常见功能和问题(二)
  9. NPM 和webpack 的基础使用

随机推荐

  1. Handle详解和使用方法
  2. Android AlarmManager实现定时任务(也就是
  3. 《疯狂Android讲义》学习笔记一
  4. Android通过intent发送彩信
  5. Android 启动时 出现黑屏
  6. Android将camera获取到的YuvData在jni中
  7. android系统关机源码(9.0)流程分析
  8. Android WebView全面讲解
  9. Android系统JNI解决上层直接调用Linux内
  10. Android5.0之后 VectorDrawable实现超炫