有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台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.java
package com.ghstudio.BootStartDemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SayHello extends Activity {
@Override
public 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.java
package 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";
@Override
public 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包,安装到模拟器或手机中。关机,重新开机。
运行截图:
为出现一个点击运行的图案
延伸思考:在多数情况下,要自动运行的不是有界面的程序,而是在后台运行的service。此时,就要用startService来启动相应的service了。
有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?
分享到:
相关推荐
在Android系统中,开发者可以利用...通过分析和运行这些代码,你可以更深入地理解如何在Android应用中实现开机自动运行的功能。同时,你也可以根据自己的需求进行相应的修改和扩展,以满足不同的应用场景。
### Android开机自动运行程序详解 #### 一、引言 在Android开发中,有时我们需要让应用程序在设备开机后自动启动,比如实现某些后台服务(如天气预报应用、新闻客户端等)能够在用户未手动启动的情况下自动从网络...
首先,我们要创建一个服务,这个服务将在启动后自动运行。服务是Android应用程序组件之一,它可以在后台长时间运行,即使用户界面已经关闭。创建一个名为`AutoStartService`的服务,需要在`AndroidManifest.xml`中...
标题中的"Delphi EX10 Android 实现开机自启动"是指使用Embarcadero Delphi XE10(也称为 RAD Studio XE10)开发的Android应用程序,目的是使其能够在设备启动时自动运行。这个过程涉及到Android系统的权限管理和...
在Android系统中,"开机自启动"是指当设备完成启动过程后,某些应用程序或服务能够自动启动并开始运行。这通常涉及到系统级别的设置和权限管理,对于开发者来说,理解和掌握这个功能是创建后台服务和持续运行应用的...
在Android应用开发中,"开机自启动"是一个常见的需求,特别是在需要后台服务持续运行或者希望应用程序在用户开机后立即可用的情况下。本知识点主要讲解如何利用Android的广播接收器(BroadcastReceiver)来实现在...
在Android系统中,实现动态设置开机自动启动程序是一项常见的需求,尤其对于开发者和系统优化者来说,这有助于确保某些服务或应用在设备启动时能够自动运行。本文将深入探讨如何在Android平台上实现实现这一功能。 ...
在Android系统中,让应用程序在开机时自动运行是开发者经常需要实现的功能,这通常涉及到服务(Service)、广播接收器(BroadcastReceiver)以及系统的权限管理。本文将深入探讨如何在Android中实现这一目标,并针对...
下面将详细讲解Android开机自启动的工作原理、实现方法以及相关注意事项。 一、开机自启动的工作原理 Android系统在启动过程中会发送一系列系统级广播,其中就包括ACTION_BOOT_COMPLETED广播。当这个广播发出时,...
在Android系统中,实现...以上就是实现“android开机自动登录”功能的主要步骤和涉及的技术点。在实际开发中,还需要考虑到各种异常情况的处理,如网络连接问题、服务器响应延迟等,以提供更稳定、可靠的用户体验。
在安卓系统中,让应用程序在开机后自动启动可以提高用户体验,特别是对于那些需要后台服务或者希望用户一打开手机就能看到最新信息的应用来说。本篇将详细介绍如何在安卓中实现开机自启动应用程序,并附带相关代码...
综上所述,要实现Android开机自动启动程序,需要理解并掌握Android的权限系统、广播接收器、服务以及不同Android版本的后台执行策略。同时,要考虑到用户体验和系统资源的合理利用,以提供稳定且高效的服务。
在Android系统中,后台保持运行并实现开机自动启动是许多应用程序的需求,比如闹钟应用、消息推送服务等。本教程将介绍如何通过源码实现这一功能。首先,我们需要理解Android系统的运行机制,尤其是关于服务...
### APK程序开机自动运行 #### 知识点概述 在Android平台上实现应用程序开机自启动是一项常见需求,尤其对于那些需要后台服务或者提醒功能的应用来说尤为重要。本文将详细讲解如何通过接收系统广播来实现这一功能...
在Android系统中,实现开机自动运行的应用主要涉及到广播接收器(BroadcastReceiver)和系统广播(System Broadcast)。在Android开机时,系统会发送一个名为ACTION_BOOT_COMPLETED的广播,开发者可以通过监听这个...
总的来说,实现Android开机自启动程序的关键在于创建BroadcastReceiver,正确配置Intent Filter,并获取必要的权限。同时,需要考虑不同Android版本的兼容性和电池优化策略,以确保应用能够在合适的时机启动。
在这个特定的情境中,我们关注的是如何使用Delphi来构建一个Android应用,该应用能够在设备开机时自动运行。这涉及到Android系统的权限管理、服务(Service)以及BroadcastReceiver等关键概念。 首先,`Delphi ...
在Android系统中,让应用程序在设备开机后自动启动是一项常见的需求,这通常涉及到对系统服务、广播接收器等组件的理解和使用。以下将详细介绍如何利用Android的广播接收器实现开机自启动。 首先,我们需要理解什么...
本教程将详细讲解如何实现安卓开机自动启动应用程序,以及涉及到的相关知识点。 首先,我们需要理解安卓系统的启动流程。在安卓设备开机时,系统会启动一个名为"SystemServer"的进程,它负责初始化系统服务和启动...