`

判断应用是安装还是卸载了

阅读更多
<receiver android:name="com.haolianluo.net.session.module.HAPKInstallReceiver">
   <intent-filter>
   <category android:name="android.intent.category.DEFAULT" /> 
  <action android:name="android.intent.action.PACKAGE_ADDED"></action>
   <data android:scheme="package"/>
   </intent-filter>
  
  <intent-filter>
   <category android:name="android.intent.category.DEFAULT" /> 
  <action android:name="android.intent.action.PACKAGE_REMOVED"></action>
   <data android:scheme="package"/>
   </intent-filter>
</receiver>
通过阅读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 应用程序的安装和删除



详细的实现代码如下

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>
分享到:
评论

相关推荐

    C++字体安装与卸载

    在C++编程中,处理字体的安装和卸载是一项重要的任务,尤其是在开发涉及用户界面的软件时。MFC(Microsoft Foundation Classes)是微软提供的一种C++库,用于构建Windows应用程序,它提供了丰富的对话框、控件和框架...

    android卸载应用程序

    android卸载已安装应用代码,提供点击打开应用功能,采用ListView显示所有已安装应用(剔除了原装应用)。 在此代码中可以学到,...调用系统卸载功能、打开已安装应用和如何判断已安装应用是否为预安装应用的方法!

    android卸载程序代码

    这里我们将深入探讨如何通过代码实现卸载已安装的程序,特别注意的是,剔除原装软件可能需要系统级别的权限,普通应用通常无法卸载预装应用。 首先,Android提供了`PackageManager`类,它是用来管理设备上所有安装...

    软件的安装与卸载PPT课件.ppt

    软件的安装与卸载是使用计算机的基本技能,无论是个人用户还是专业技术人员,都需要熟练掌握。本课件主要讲解了软件的获取途径、安装过程以及卸载方法。 首先,软件的获取主要有两种常见方式。一是通过购买正版软件...

    windows服务自动安装卸载

    总的来说,这个“服务卸载安装”程序是Windows系统管理员的得力工具,它通过自动化服务的安装、卸载和状态检查,提升了系统的管理效率。无论是在企业环境中批量部署服务,还是在开发测试过程中频繁调整服务,都能...

    安卓应用卸载器源码.zip

    3. **判断应用类型**:源码会检测目标应用是否为系统应用。这通常是通过检查应用的`android:sharedUserId`属性或者`isSystemApp()`这样的API来实现的。系统应用的这个标识会阻止它们被普通用户卸载。 4. **自卸载...

    联想工程师专用小工具001-.NET安装卸载V3.43.1.exe.zip

    在实际应用中,联想工程师专用小工具001-.NET安装卸载V3.43.1不仅适用于联想的设备,也可以广泛应用于其他运行Windows操作系统的计算机。无论是在企业内部的IT部门,还是在个人用户进行系统维护时,这款工具都能发挥...

    android快捷卸载第三方应用

    因此,可以通过检查`PackageInfo.flags & FLAG_SYSTEM`是否等于0来判断一个应用是否为第三方应用。 接下来,实现卸载功能需要用到`Intent`对象和` startActivityForResult()`方法。创建一个`Intent`,指定动作为`...

    js判断移动端APP是否安装

    js判断移动端APP是否安装 如果安装就打开APP 没有安装就提示下载

    s60手机安装、卸载软件和有关证书的问题

    - **权限检查**:系统会根据证书赋予的权限来判断软件是否可以安装。 - **签名验证**:确保软件来源的安全性,防止恶意软件的侵入。 如果软件没有经过正确的签名或者签名无效,则可能会遇到以下情况: - 显示安装...

    Android应用源码之监听自身被卸载.zip

    首先,Android系统并未直接提供监听应用卸载的API,但我们可以利用广播接收器(BroadcastReceiver)来间接实现这一功能。创建一个自定义的BroadcastReceiver,并在AndroidManifest.xml文件中注册它,监听ACTION_...

    安卓Android源码——安卓应用游戏卸载器项目 (2).zip

    3. 鉴别可卸载的应用:有些系统应用是不允许卸载的,需要根据返回的PackageInfo的flags属性判断。 4. 创建卸载Intent:`Intent(Intent.ACTION_DELETE)`并设置data为待卸载应用的包名。 5. 发送Broadcast:使用`...

    MIUI卸载系统内置软件.rar

    "MIUI卸载系统内置软件.rar"这个压缩包可能还包含了如何判断哪些应用可以安全卸载的信息,以及可能的回滚方法,以确保用户在卸载后能够保持系统的正常运行。使用前务必仔细阅读指南,遵循所有步骤,并对可能的风险有...

    把窗体卸载干净

    - **条件判断与强制卸载** #### 窗体卸载的概念与重要性 在编程中,特别是使用如Visual Basic (VB) 这样的语言进行桌面应用程序开发时,窗体是构成用户界面的基本单位。窗体可以承载各种控件(如按钮、文本框等),...

    安卓安装卸载相关-安卓后台静默安装APK代码需要赋予root权限.rar

    在安卓系统中,安装和卸载应用程序通常是用户交互式的操作,但有时开发者可能需要在后台自动执行这些任务,比如更新应用、系统维护等。标题提到的"安卓后台静默安装APK代码需要赋予root权限"涉及到的核心知识点是...

    Delphi安装卸载Hook键盘钩子典型实例

    在本文中,我们将深入探讨如何在Delphi编程环境中实现键盘钩子(Keyboard Hook)的安装与卸载。Delphi是一款强大的Windows应用程序开发工具,它基于Object Pascal语言,提供了丰富的组件库和强大的IDE(集成开发环境...

    软件卸载工具

    在IT领域,软件卸载工具是一种非常实用的辅助程序,它们设计用于帮助用户更有效地从计算机中删除不再需要的应用程序。这些工具通常提供比操作系统自带的卸载功能更全面、更深入的清理服务,能够处理那些常规卸载过程...

    移动云计算卸载技术研究现状及其在电网中的应用.pdf

    2. 更智能的卸载策略:利用机器学习和人工智能技术,智能地判断任务卸载的时机和方式,以实现能效和性能的最优化。 3. 更广的覆盖范围:随着5G技术的普及和6G等未来通信技术的发展,移动云计算的覆盖范围将更为广泛...

    强力卸载软件

    三是智能分析,对于复杂的应用程序,软件能自动识别其组件,避免用户手动选择和判断。 UninstallTool.3987.com可能是一款具体的强力卸载软件,根据其名称推测,这可能是一个版本号为3987的Uninstall Tool软件的下载...

Global site tag (gtag.js) - Google Analytics