Android实现开机自动运行程序(转)

摘要:
有时,应用程序需要在打开时自动运行,例如自动更新Internet内容的后台服务。总结一下Android框架,我真的切中要害。理解这句话的含义,许多与Android平台上某些功能的实现相关的问题都可以解决。请记住,Android框架会说:不要给我打电话,我会给你回电话。不要忘记配置android.permission.RECEIVE_BOOT_COMPLETED权限。关闭并重新启动机器。

  有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台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包,安装到模拟器或手机中。关机,重新开机。

免责声明:文章转载自《Android实现开机自动运行程序(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微博的MySQL数据库优化实践经验一个鼠标键盘控制两台甚至多台主机的方法--Synergy下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Core:使用EntityFrameworkCore操作MySql来丰富仓储模块

概述 上一篇简单介绍了Dapper的基本用法,数据的存储为SqlServer。那么这一篇就记录一下使用EFCore来操作MySql的一些方式,这种模式比较适合那种一个项目中需要操作多种数据库的模式。不过因为微软官方并没有提供其驱动,所以我们需要借助MySql官方提供的驱动进行基本的增删改查操作。这样一来我们也可以将数据库迁移到Linux服务器上了,是不是很...

VM安装安卓虚拟机

使用VM安装安卓虚拟机 配置过程 参考链接:VMware实现Android_x86——8.1从安装到使用 具体的工具都可以从 盘点网 下载使用。 VMWARE虚拟机如何打开.VMDK格式的磁盘映像 Android x86开源项目最新版虚拟机镜像下载VM/Vbox 虚拟机里玩谷歌原生版安卓系统...

Android 三种动画详解

Android 三种动画详解 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今天来一发Android应用的各种Animation大集合。英文厉害的请直接移步参考Android Developer。 Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如...

android界面布局

(一)LinearLayout界面编排模式 他的格式是按照线性顺序,由上往下或右左往右,逐一排列界面组件。 layout_中的“match_parent”表示要填满他所在的外框,而“wrap_content”表示它的大小只要满足内部所包含的界面组件即可。 android:orientation:“horizontal”表示排列方式为水平,而“vertica...

图片轮播插件-carouFredSel

carouFredSel图片轮播插件基于Jquery,比较常规的轮播插件,支持滚轮及键盘左右按键,加入其它插件可实现更加复杂的特效。 主页地址:http://caroufredsel.dev7studios.com/ 例子: html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio...

三 APPIUM Android自动化 测试初体验

1.创建一个maven项目 成功新建工程: 编辑pom.xml,在<dependencies></dependencies>下添加appium相关依赖: <dependency> <groupId>org.testng</groupId> <artifactId>...