<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++编程中,处理字体的安装和卸载是一项重要的任务,尤其是在开发涉及用户界面的软件时。MFC(Microsoft Foundation Classes)是微软提供的一种C++库,用于构建Windows应用程序,它提供了丰富的对话框、控件和框架...
android卸载已安装应用代码,提供点击打开应用功能,采用ListView显示所有已安装应用(剔除了原装应用)。 在此代码中可以学到,...调用系统卸载功能、打开已安装应用和如何判断已安装应用是否为预安装应用的方法!
这里我们将深入探讨如何通过代码实现卸载已安装的程序,特别注意的是,剔除原装软件可能需要系统级别的权限,普通应用通常无法卸载预装应用。 首先,Android提供了`PackageManager`类,它是用来管理设备上所有安装...
软件的安装与卸载是使用计算机的基本技能,无论是个人用户还是专业技术人员,都需要熟练掌握。本课件主要讲解了软件的获取途径、安装过程以及卸载方法。 首先,软件的获取主要有两种常见方式。一是通过购买正版软件...
总的来说,这个“服务卸载安装”程序是Windows系统管理员的得力工具,它通过自动化服务的安装、卸载和状态检查,提升了系统的管理效率。无论是在企业环境中批量部署服务,还是在开发测试过程中频繁调整服务,都能...
3. **判断应用类型**:源码会检测目标应用是否为系统应用。这通常是通过检查应用的`android:sharedUserId`属性或者`isSystemApp()`这样的API来实现的。系统应用的这个标识会阻止它们被普通用户卸载。 4. **自卸载...
在实际应用中,联想工程师专用小工具001-.NET安装卸载V3.43.1不仅适用于联想的设备,也可以广泛应用于其他运行Windows操作系统的计算机。无论是在企业内部的IT部门,还是在个人用户进行系统维护时,这款工具都能发挥...
因此,可以通过检查`PackageInfo.flags & FLAG_SYSTEM`是否等于0来判断一个应用是否为第三方应用。 接下来,实现卸载功能需要用到`Intent`对象和` startActivityForResult()`方法。创建一个`Intent`,指定动作为`...
js判断移动端APP是否安装 如果安装就打开APP 没有安装就提示下载
- **权限检查**:系统会根据证书赋予的权限来判断软件是否可以安装。 - **签名验证**:确保软件来源的安全性,防止恶意软件的侵入。 如果软件没有经过正确的签名或者签名无效,则可能会遇到以下情况: - 显示安装...
首先,Android系统并未直接提供监听应用卸载的API,但我们可以利用广播接收器(BroadcastReceiver)来间接实现这一功能。创建一个自定义的BroadcastReceiver,并在AndroidManifest.xml文件中注册它,监听ACTION_...
3. 鉴别可卸载的应用:有些系统应用是不允许卸载的,需要根据返回的PackageInfo的flags属性判断。 4. 创建卸载Intent:`Intent(Intent.ACTION_DELETE)`并设置data为待卸载应用的包名。 5. 发送Broadcast:使用`...
"MIUI卸载系统内置软件.rar"这个压缩包可能还包含了如何判断哪些应用可以安全卸载的信息,以及可能的回滚方法,以确保用户在卸载后能够保持系统的正常运行。使用前务必仔细阅读指南,遵循所有步骤,并对可能的风险有...
- **条件判断与强制卸载** #### 窗体卸载的概念与重要性 在编程中,特别是使用如Visual Basic (VB) 这样的语言进行桌面应用程序开发时,窗体是构成用户界面的基本单位。窗体可以承载各种控件(如按钮、文本框等),...
在安卓系统中,安装和卸载应用程序通常是用户交互式的操作,但有时开发者可能需要在后台自动执行这些任务,比如更新应用、系统维护等。标题提到的"安卓后台静默安装APK代码需要赋予root权限"涉及到的核心知识点是...
在本文中,我们将深入探讨如何在Delphi编程环境中实现键盘钩子(Keyboard Hook)的安装与卸载。Delphi是一款强大的Windows应用程序开发工具,它基于Object Pascal语言,提供了丰富的组件库和强大的IDE(集成开发环境...
在IT领域,软件卸载工具是一种非常实用的辅助程序,它们设计用于帮助用户更有效地从计算机中删除不再需要的应用程序。这些工具通常提供比操作系统自带的卸载功能更全面、更深入的清理服务,能够处理那些常规卸载过程...
2. 更智能的卸载策略:利用机器学习和人工智能技术,智能地判断任务卸载的时机和方式,以实现能效和性能的最优化。 3. 更广的覆盖范围:随着5G技术的普及和6G等未来通信技术的发展,移动云计算的覆盖范围将更为广泛...
三是智能分析,对于复杂的应用程序,软件能自动识别其组件,避免用户手动选择和判断。 UninstallTool.3987.com可能是一款具体的强力卸载软件,根据其名称推测,这可能是一个版本号为3987的Uninstall Tool软件的下载...