`
z303729470
  • 浏览: 128942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 监控程序安装和删除的实现

 
阅读更多
本文主要讨论如何监控 Android 程序包的安装和删除

Android系统的安装方式我在 《Android 应用程序安装方式 的详细调研》一文中已经做了详细的阐述,链接如下

http://blog.csdn.net/Zengyangtech/archive/2010/07/15/5737522.aspx

基于这些安装方式,我们如何对系统进行的安装进行监控呢?

通过阅读Android SDK里关于intent.action这部分里面的描述,我们可以找到一些与package相关的系统广播
android.intent.action.PACKAGE_ADDED   
android.intent.action.PACKAGE_CHANGED   
android.intent.action.PACKAGE_DATA_CLEARED   
android.intent.action.PACKAGE_INSTALL 
android.intent.action.PACKAGE_REMOVED 
android.intent.action.PACKAGE_REPLACED   
android.intent.action.PACKAGE_RESTARTED  
其中

ACTION_PACKAGE_ADDED

在SDK里的描述是 

Broadcast Action: A new application package has been installed on the device.

ACTION_PACKAGE_REMOVED

在SDK里的描述是

Broadcast Action: An existing application package has been removed from the device.

ACTION_PACKAGE_REPLACED

在SDK里的描述是

Broadcast Action: A new version of an application package has been installed, replacing an existing version that was previously installed.



通过这三个广播消息 我们已经可以监控到Android 应用程序的安装和删除



详细的实现代码如下

getBroadcast.java
package zy.Broadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class getBroadcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
               
                  if(Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())){
                    Toast.makeText(context, "有应用被添加", Toast.LENGTH_LONG).show();
            }
                else  if(Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())){
                    Toast.makeText(context, "有应用被删除", Toast.LENGTH_LONG).show();
            }
             /*   else  if(Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())){
                    Toast.makeText(context, "有应用被改变", Toast.LENGTH_LONG).show();
            }*/
                else  if(Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())){
                    Toast.makeText(context, "有应用被替换", Toast.LENGTH_LONG).show();
            }
               /* else  if(Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())){
                    Toast.makeText(context, "有应用被重启", Toast.LENGTH_LONG).show();
            }*/
              /*  else  if(Intent.ACTION_PACKAGE_INSTALL.equals(intent.getAction())){
                    Toast.makeText(context, "有应用被安装", Toast.LENGTH_LONG).show();
            }*/
            
        }
       
}

然后在AndroidManifest.xml中声明这几个Action的<intent-filter>即可在系统里捕获这些广播消息

具体的源代码如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="zy.Broadcast"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Broadcast"
                  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="getBroadcast" android:enabled="true" >
         <intent-filter>
	         <action android:name="android.intent.action.PACKAGE_ADDED"></action>
	         <!-- <action android:name="android.intent.action.PACKAGE_CHANGED"></action>-->
	         <action android:name="android.intent.action.PACKAGE_REMOVED"></action>
	         <action android:name="android.intent.action.PACKAGE_REPLACED"></action>
	         <!-- <action android:name="android.intent.action.PACKAGE_RESTARTED"></action>-->
	       <!--    <action android:name="android.intent.action.PACKAGE_INSTALL"></action>-->
	           <data android:scheme="package"></data>
              </intent-filter>
</receiver>
    </application>
    <uses-sdk android:minSdkVersion="7" />
    
</manifest> 

把程序安装之后 ,系统就会注册这个BroadcastReceiver

然后有应用安装删除替换操作时时,就会弹出Toast提示
以上这样,我们就可以实现监控Android 应用程序的安装过程
原文地址:http://blog.csdn.net/Zengyangtech/article/details/5738940
分享到:
评论
1 楼 sgjsdf5944 2013-12-17  
你好,请问下楼主如果我想在安装完成页面上控制打开不可用该怎么实现了,谢谢~~~~~~~

相关推荐

    精通ANDROID 3(中文版)1/2

    1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 ...

    精通Android 3 (中文版)2/2

    1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 ...

    Android开发资料合集-World版!

    9.46、将程序安装到SD卡 268 9.47、创建一个SD映像 269 9.48、查看手机内存存储 269 9.49、在模拟器上调试GOOGLE MAPS 271 9.50、建立GPRS连接 273 9.51、获取手机位置 274 9.5* 获得经纬度,地名标注在地图上 274 ...

    Android 开发技巧

    9.46、将程序安装到SD卡 268 9.47、创建一个SD映像 269 9.48、查看手机内存存储 269 9.49、在模拟器上调试GOOGLE MAPS 271 9.50、建立GPRS连接 273 9.51、获取手机位置 274 9.5* 获得经纬度,地名标注在地图上 274 ...

    Android典型技术模块开发详解

    10.4.2 数据库表的增删改查 10.4.3 分页查询 10.5 SQLite事务支持 10.6 Content Providers(数据共享) 10.6.1 ContentProvider基础类 10.6.2 继承ContentProvider类 10.6.3 使用ContentResolver操作ContentProvider...

    Syslog-ng-Monitor-Android

    适用于Android的Syslog-ng Monitor关于Syslog-ng是Unix和类似Unix系统的Syslog协议的开源实现。 它通过基于内容的过滤,丰富的过滤功能,灵活的配置选项扩展了原始syslogd模型,并为syslog添加了重要功能,例如使用...

    安卓端 adb shell debug toolbox.apk文件,通过安卓apk进行adb命令操作

    3.支持查看正在运行的应用程序 4.支持截图。 5.支持推送文件 6.支持安装apk 7.支持拉文件 8.支持直接打开远程图片&音视频文件 9.支持删除远程文件 10.支持电视遥控器 11.支持文字输入 12.支持系统监控 13.支持查看...

    365防水墙系统 v2.3.1.zip

    365防水墙用于防泄密、监控审计、封堵端口、防拷贝,也叫桌面安全管理系统、内网监控审计系统、内网安全管理系统、终端安全管理系统、内网防水...极强的反卸载和破解能力,即使启动到DOS下删除程序文件也能够自动复活。

    Onavo Count 2.2.1-4

    查看网络状态▪ 查看 Wi-Fi 状态▪ 完全的互联网访问权限▪ 发现已知帐户▪ 检索当前运行的应用程序▪ 结束后台进程▪ 读取手机状态和身份▪ 开机时自动启动▪ 修改/删除 SD 卡中的内容▪ 控制振动器

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    DuckChat私有聊天系统(多客户端)

    2、找到 XAMPP 的网站根目录[xampp安装地址]/htdocs,删除原有的默认代码。 3、下载源代码,复制src目录下的内容到网站根目录 4、启动 XAMPP Control 管理平台,点击启动apache。 5、打开浏览器,访问localhost,...

    SDKMonitor:用于显示和监视已安装应用中的targetSDK的应用

    它还利用隐式广播(如果有)来自动跟踪应用程序的安装,更新和删除。 Android Oreo删除了这些更改(删除操作除外),因此应用程序可以选择使用WorkManager定期在后台自动获取这些更改。 每次更改应用程序的target...

    Dr.Web Security Space Life 12.3.1.apk

    •筛选设备和系统应用程序上安装的应用程序的外部网络流量。在Wi-Fi和蜂窝网络过滤之间进行选择,并利用可自定义的规则(按IP地址和/或端口过滤,以及按整个网络或IP范围过滤)。 •监控当前和以前传输的流量; 为您...

    TensorDash:TensorDash是一个应用程序,可让您远程监控深度学习模型的指标并在模型训练完成或崩溃时通知您

    TensorDash是一个应用程序,可让您远程监视深度学习模型的指标,并在模型训练完成或崩溃时通知您。 为什么选择Tensordash? 实时观看您的模型火车。 支持所有主要的深度学习框架。 远程获取有关培训和验证指标的...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    正点工具箱 v4.2.433

    能批量移动手机上的软件到SD卡,批量删除软件;实时显示剩余电量和可用时间;实时监控手机流量;免打扰功能让手机在 预设的日期、时间段内处于静音、振动或是离线状态,休息时间不怕打扰,睡眠时间减少辐射。 功能...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目源代码

    FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上...

    安卓版大蜘蛛防病毒软件 Dr.Web Security Space PRO 12.6.2 中文多.zip

    •过滤设备和系统应用程序上安装的应用程序的外部网络流量。在 Wi-Fi 和蜂窝网络过滤之间进行选择,并利用可自定义的规则(按IP地址和/或端口以及整个网络或IP范围进行过滤)。 •监视当前和以前传输的流量;提供...

Global site tag (gtag.js) - Google Analytics