有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台
service。怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“
Don''t
call me, I''ll call you back!”总结
Android框架,真是说到点子上了。理解这句话的含义,许多有关
Android平台上实现某种功能的问题,都能迎刃而解。
使用场景:手机开机后,自动运行程序,在屏幕上显示
"Hello. I started!"字样。
背景知识:当
Android启动时,会发出一个系统广播,内容为
ACTION_BOOT_COMPLETED,它的字符串常量表示为
android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,
Android框架说:
Don''t
call me, I''ll call you back。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个
BroadcastReceiver。
代码解析:
1、界面
Activity:
SayHello.javapackage com.ghstudio.BootStartDemo;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class SayHello extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText("Hello. I started!");setContentView(tv);}}这段代码很简单,当
Activity启动时,创建一个
TextView,用它显示
"Hello.
I started!"字样。
2、接收广播消息:
BootBroadcastReceiver.javapackage com.ghstudio.BootStartDemo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class BootBroadcastReceiver extends BroadcastReceiver {static final String ACTION = "android.intent.action.BOOT_COMPLETED";@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(ACTION)){Intent sayHelloIntent=new Intent(context,SayHello.class);sayHelloIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(sayHelloIntent);}}}该类派生自
BroadcastReceiver,覆载方法
onReceive中,检测接收到的
Intent是否符合
BOOT_COMPLETED,如果符合,则启动
SayHello那个
Activity。
3、配置文件:
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ghstudio.BootStartDemo"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".SayHello"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=".BootBroadcastReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver></application><uses-sdk android:minSdkVersion="3" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission></manifest>注意其中红色粗体字那一部分,该节点向系统注册了一个
receiver,子节点
intent-filter表示接收
android.intent.action.BOOT_COMPLETED消息。不要忘记配置
android.permission.RECEIVE_BOOT_COMPLETED权限。
完成后,编译出
apk包,安装到模拟器或手机中。关机,重新开机。
这就是一个广播嘛,用一个
receiver
接受
RECEIVE_BOOT_COMPLETED
这个广播事件,然后就开机就启动这个
app
。
分享到:
相关推荐
Android 开机自动启动 服务 的小Demo
开机自动启动音乐播放service,在service意外停止的时候重新启动service。 需要注意的是开机启动action Intent.ACTION_BOOT_COMPLETED 需要申请权限:<uses-permission android:name="android.permission.RECEIVE_...
android开机自动启动service例子 android开机自动启动service例子
还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...
Android开机自动运行一个程序教程
Android应用开机自动启动代码Demo,下载后直接放在Android Studio里运行就可以
【Android】开机自启动Demo 相关文章:http://blog.csdn.net/etzmico/article/details/6848465
android 开机自动启动的service demo,4.0完美运行
Google在更新Android8.0后对Service的...导致目前想要启动服务必需实现服务的前台化,打开应用才能顺利启动service,否则在服务启动5秒后,系统将自动报错,会弹出一个提示窗口。实际测试得系统的app才能启动service。
可以实现手机开机重启的时候自启动,程序简单易懂,有注释,是利用广播实现的
android开机自动运行APP实现方式其实很简单。在android系统运行时,会发出“android.intent.action.BOOT_COMPLETED”这个系统广播,因此我们监听它,并进行打开APP的操作即可。现在大多数的android手机系统都默认...
Android开机自动运行.pdf
Android应用开机时自动启动 想要编写自启动应用的可以参考些源码!
delphi ex10 android 实现开机自启动.rar
本文实例讲述了Android实现开机自动启动Service或app的方法。分享给大家供大家参考,具体如下: 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动...
Android安卓app 让程序开机自动运行APP.zip
android 用户忘记开机密码后,T卡中新建文件夹"factory_reset",重新开机后,系统会自动解锁。
在记住密码登录的基础上加了开机自启动的功能。
开机启动一个一个Activity,并发出一个通知