博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播...
阅读量:7067 次
发布时间:2019-06-28

本文共 4679 字,大约阅读时间需要 15 分钟。

* 添加权限  
* 4.0以后广播接收者安装以后必须手动启动一次,否则不生效* 4.0以后广播接收者如果被手动关闭,就不会再启动了------------------------------------------------------------------------#监听SD卡状态* 清单文件中定义广播接收者接收的类型,监听SD卡常见的三种状态,所以广播接收者需要接收三种广播
SD卡就绪广播
SD卡移除广播
SD卡拔出广播
系统发送广播的时候带了数据
* 广播接收者的定义 public class SDCardReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 区分接收到的是哪个广播 String action = intent.getAction(); if(action.equals("android.intent.action.MEDIA_MOUNTED")){ System.out.println("sd卡就绪"); } else if(action.equals("android.intent.action.MEDIA_UNMOUNTED")){ System.out.println("sd卡被移除"); } else if(action.equals("android.intent.action.MEDIA_REMOVED")){ System.out.println("sd卡被拔出"); } } }------------------------------------------------------------------------#勒索软件* 接收开机广播,在广播接收者中启动勒索的Activity* 清单文件中配置接收开机广播
* 权限
接收开机成功广播的权限* 定义广播接收者 @Override public void onReceive(Context context, Intent intent) { //开机的时候就启动勒索软件 Intent it = new Intent(context, MainActivity.class); context.startActivity(it); }* 以上代码还不能启动MainActivity,因为广播接收者的启动,并不会创建任务栈,那么没有任务栈,就无法启动activity* 手动设置创建新任务栈的flag it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);------------------------------------------------------------------------#监听应用的安装、卸载、更新> 原理:应用在安装卸载更新时,系统会发送广播,广播里会携带应用的包名* 清单文件定义广播接收者接收的类型,因为要监听应用的三个动作,所以需要接收三种广播
应用安装消息
应用更新消息
应用卸载消息
发送广播时携带的data是安装删除软件的包名
* 广播接收者的定义 public void onReceive(Context context, Intent intent) { //区分接收到的是哪种广播 String action = intent.getAction(); //获取广播中包含的data,应用软件的包名 Uri uri = intent.getData(); if(action.equals("android.intent.action.PACKAGE_ADDED")){ System.out.println(uri + "被安装了"); } else if(action.equals("android.intent.action.PACKAGE_REPLACED")){ System.out.println(uri + "被更新了"); } else if(action.equals("android.intent.action.PACKAGE_REMOVED")){ System.out.println(uri + "被卸载了"); } }-----------------------------------------------------------------------#广播的两种类型(广播可以跨应用进行)* 无序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,并且是没有先后顺序(同时收到,不能修改广播数据并且不可以截断广播)* 有序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,但是会按照广播接收者的优先级来决定接收的先后顺序(可以截断广播) * 优先级的定义:-1000~1000 * 最终接收者:所有广播接收者都接收到广播之后,它才接收,并且一定会接收 * abortBroadCast:阻止其他接收者接收这条广播,类似拦截,只有有序广播可以被拦截package com.itheima.center;import android.os.Bundle;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View v){ Intent intent = new Intent(); intent.setAction("com.itheima.fdm"); //发送有序广播 //new MyReceiver()这个resultReceiver:不需要在清单文件中配置,这个广播接收者只接受该条有序广播,并且是最后一个收到该广播,并且一定可以收到该广播(即使被截断了也能够收到) sendOrderedBroadcast(intent, null, new MyReceiver(), null, 0, "每人发100斤大米", null); } // class MyReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String text = getResultData(); System.out.println("反贪局收到文件:" + text); } }}/*清单文件:
*/package com.itheima.local;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class ShengZF extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String text = getResultData(); System.out.println("省政府收到文件:" + text); setResultData("每人发80斤大米"); abortBroadcast();//广播不再传递 }}

 

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4948131.html,如需转载请自行联系原作者

你可能感兴趣的文章
我的友情链接
查看>>
Linux软件包的管理--YUM
查看>>
Java Web笔记 – Servlet中的Filter过滤器的介绍和使用 编写过滤器
查看>>
Linux的包管理工具介绍
查看>>
MySQL,binlog2sql回滚操作测试
查看>>
CentOS7下yum安装Jenkins
查看>>
内核参数优化
查看>>
用户,组和权限零碎知识
查看>>
文件修改较优方式
查看>>
oracle check if the display variable is set
查看>>
国家级期刊发表要求注意事项
查看>>
C文件操作
查看>>
office 2016 下载地址
查看>>
23、makefile常用讲解(3)
查看>>
CSS3圆角详解
查看>>
.Net 类构造函数可以加返回值吗?如void.
查看>>
Jenkins插件之Deploy
查看>>
sqlServer 2000 唯一 索引
查看>>
IP转发(转)
查看>>
cscope的使用
查看>>