文档章节

Android开机自动运行APP——BroadcastReceiver

郏高阳
 郏高阳
发布于 2013/06/05 22:30
字数 616
阅读 32648
收藏 27

前言:

有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don't call me, I'll call you back!”总结Android框架,真是说到点子上了。理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解。

使用场景:

手机开机后,自动运行程序。

{只是最近本人在做万达大歌星点餐系统,需要用到系统启动直接启动App避免服务员玩别的app才研究的,以下分享是本人参考网络,亲自尝试成功的代码,贴出来与大家分享,希望能帮助更多的人!不懂的可以问我哦。QQ:11745405 }

背景知识:

当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,Android框架说:Don't call me, I'll call you back。我们要做的是等到接收这个消息,而实现的手段就是实现一个BroadcastReceiver。

代码解析:

1、界面MainActivity.java

package com.example;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.*;
import android.widget.Toast;

public class MainActivity extends Activity {   // 收到消息启动此Activity
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setIntegerProperty("splashscreen", R.drawable.wandapad_splash);
        TextView tv = new TextView(this);
        tv.setText("Hello这是MainActivity");
        setContentView(tv);
    }

2、接收广播消息:BootBroadcastReceiver.java

package com.example;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

/**
 * Created with IntelliJ IDEA.
 * User: 郏高阳
 * Date: 13-6-5
 * Time: 下午8:25
 * To change this template use File | Settings | File Templates.
 */
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 mainActivityIntent = new Intent(context, MainActivity.class);  // 要启动的Activity
            mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainActivityIntent);
        }
    }
}
该类派生自BroadcastReceiver,覆载方法onReceive中,检测接收到的Intent是否符合BOOT_COMPLETED,如果符合,则启动MainActivity。

3、配置文件:AndroidManifest.xml

application内添加一下配置:

<receiver android:name=".BootBroadcastReceiver">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
  </receiver>

向系统注册了一个receiver,子节点intent-filter表示接收android.intent.action.BOOT_COMPLETED消息。

4、在manifest中添加以下权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
5、大功告成!

延伸思考:

在多数情况下,要自动运行的不是有界面的程序,而是在后台运行的service。此时,就要用startService来启动相应的service了。

❤犒劳一杯咖啡❤

原文链接:http://my.oschina.net/jgy/blog/135858


© 著作权归作者所有

共有 人打赏支持
郏高阳

郏高阳

粉丝 100
博文 153
码字总数 112268
作品 1
黄浦
程序员
私信 提问
加载中

评论(24)

blackhello
blackhello
按照弄,没实现,不知是哪里的问题:(,用的是华为平板测试
blackhello
blackhello
按照弄,没实现,不知是哪里的问题:(,用的是华为平板测试
Z先森丶
Z先森丶

引用来自“chong子”的评论

该广播在3.X以后,好像需要启动一次客户端以后才能收到。。。
是啊,我现在遇到就是这个问题,该怎样解决呢?我不想他启动客户端,而是直接进入app,大神
郏高阳
郏高阳

引用来自“fategaga”的评论

不知道是csdn抄袭你得。还是你抄袭csdn的
开玩笑吧,我这个都写几年了?
fategaga
fategaga
不知道是csdn抄袭你得。还是你抄袭csdn的
郏高阳
郏高阳

引用来自“浅夏_未央”的评论

参考代码 开机也启动不了
1:不是所有android手机都兼容。
2:第一次安装完成后要打开一次注册服务,再重启才可以启动
浅夏_未央
参考代码 开机也启动不了
m
my2016
小米不能开机自启动的问题,可以参看:http://blog.csdn.net/ksr12333/article/details/16116627
hellowword
hellowword
BroadcastReceiver静态注册的生命周期不和app一样的吗 看机自启后app应该没启动吧 是因为加
1
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
的缘故吗??麻烦解释一下
郏高阳
郏高阳

引用来自“醉如潇”的评论

怎么我的小米启动不了啊
小米OS我没有做兼容测试,我测试是next
Android Service 服务(二)—— BroadcastReceiver

一、 BroadcastReceiver简介 BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用Context.sendBroadcast()发送、BroadcastReceiver()接收。 广播Intent的发送是通过调用Conte...

长平狐
2013/01/06
145
0
android中service,activity随手机开机而自动启动

首先必须明白android程序之间的通信是广播broadcastReceiver,程序之间的数据共享是用内容提供者Contentproved,所以要在手机启动时,启动服务,就是要知道什么时候手机开机,这时可以注册一...

陈杰
2012/03/14
0
0
Android 开机自启动应用

Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED” 开机自启动程序,只需要“捕捉”到这个消息再启动你的程序即可...

长平狐
2013/01/06
140
0
Android实现开机自启动某个程序

本文参考自:http://blog.csdn.net/hmg25/article/details/6288070 本人最近想写个app,但是其间需要用到开机自启以及不被杀死的功能。 在网上看到高焕堂线程以“Don't call me, I'll call ...

andy521zhu
2014/03/23
0
1
Android开机启动Activity或者Service方法

这段时间在做Android的基础开发,现在有一需求是开机启动,按照网上某些博文教程做了下,始终不成功,一开机总是提示所启动的应用程序意外终止,于是参考了Android SDK doc,终于解决问题,下...

天下杰论
2014/03/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mogodb服务

部署MongoDB 官网: https://www.mongodb.com/download-center/community 创建mongo数据目录 mkdir /data/mongodb 二进制部署 wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x8......

以谁为师
昨天
3
0
大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞。在敦促每位用户尽快升级系统的同时,Debian团队还发布了Debian ...

linux-tao
昨天
3
0
PHP 相关配置

1. php-fpm的pool 编辑php-fpm配置文件php-fpm.con vim /usr/local/php/etc/php-fpm.conf //在[global]部分增加以下内容 include = etc/php-fpm.d/*.conf # 相当与Nginx的虚拟主机文件 “vho......

Yue_Chen
昨天
2
0
EOS主网数据同步指南

本文介绍如何安装EOS节点软件并接入EOS主网,主要包括以下内容: 如何安装EOS节点软件 如何配置EOS节点软件接入主网 如何启动EOS节点软件与主网数据同步 如何检查主网数据同步进度 如何正确地...

汇智网教程
昨天
3
0
matlab-线性代数 齐次方程组 基础解系和通解

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clearclc% x1+2*......

志成就
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部