`
亚当爱上java
  • 浏览: 705157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android利用系统广播---监听应用程序安装和卸载[转]

阅读更多
   在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。可以通过intent.getDataString()获得所安装的包名。当卸载程序时系统发android.intent.action.PACKAGE_REMOVED广播。同样intent.getDataString()获得所卸载的包名。

第一、 新建监听类:BootReceiver继承BroadcastReceiver
public class BootReceiver extends BroadcastReceiver {    
   
    @Override   
    public void onReceive(Context context, Intent intent) {    
        //接收广播:系统启动完成后运行程序    
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {    
             Intent newIntent = new Intent(context, WatchInstall.class);    
             newIntent.setAction("android.intent.action.MAIN");       
             newIntent.addCategory("android.intent.category.LAUNCHER");     
             newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);       
             context.startActivity(newIntent);    
        }    
        //接收广播:设备上新安装了一个应用程序包后自动启动新安装应用程序。    
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {    
            String packageName = intent.getDataString().substring(8);    
            System.out.println("---------------" + packageName);    
            Intent newIntent = new Intent();    
            newIntent.setClassName(packageName,packageName+ .MainActivity");    
            newIntent.setAction("android.intent.action.MAIN");             
            newIntent.addCategory("android.intent.category.LAUNCHER");             
            newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
            context.startActivity(newIntent);    
        }    
        //接收广播:设备上删除了一个应用程序包。    
        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {    
            System.out.println("********************************");    
            DatabaseHelper dbhelper = new DatabaseHelper();    
            dbhelper.executeSql("delete from users");    
        }    
    }   


第二、 修改AndroidManifest.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>   
<manifest xmlns:android="http://schemas.android.com/apk/res/android"   
     package="org.me.watchinstall">   
    <application>   
        <receiver android:name=".BootReceiver"   
                  android:label="@string/app_name">   
            <intent-filter>   
                <action android:name="android.intent.action.BOOT_COMPLETED"/>   
                <category android:name="android.intent.category.LAUNCHER" />   
            </intent-filter>   
            <intent-filter>   
             <action android:name="android.intent.action.PACKAGE_ADDED" />   
             <action android:name="android.intent.action.PACKAGE_REMOVED" />   
              <data android:scheme="package" />   
<!--[color=red] 注意!! 这句必须要加,否则接收不到BroadCast  [/color] --> 
            </intent-filter>   
        </receiver>   
        <activity android:name=".WatchInstall" android:label="WatchInstall">   
            <intent-filter>   
                <action android:name="android.intent.action.MAIN"/>   
                <category android:name="android.intent.category.LAUNCHER"/>   
            </intent-filter>   
        </activity>   
    </application>   
    <uses-permission android:name="android.permission.INTERNET" />   
    <uses-permission android:name="android.permission.RESTART_PACKAGES"/>   
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>   
</manifest> 

分享到:
评论
5 楼 eagledame 2016-08-25  
<data android:scheme="package" />

这个提示帮助了很大 ,谢谢了
4 楼 flyingsir_zw 2014-01-16  
flyingsir_zw 写道
安装失败了,什么样的广播呢???



安装开始,没有接收到成功的广播,安装失败。
3 楼 亚当爱上java 2013-12-19  
cdc002 写道
DatabaseHelper dbhelper = new DatabaseHelper();  这一句代码是什么意思?

这个貌似没什么做用,好像是删除数据库中的相关信息吧。DatabaseHelper 貌似继承SQLiteDatabase。这个是N年前破解应用汇,大概是检测应用程序安装后把 app的相关信息记录数据库,卸载后再删除。代码貌似有问题,估计迷惑了不少人,汗!
2 楼 cdc002 2013-12-19  
DatabaseHelper dbhelper = new DatabaseHelper();  这一句代码是什么意思?
1 楼 flyingsir_zw 2012-04-06  
安装失败了,什么样的广播呢???

相关推荐

    Android监听应用程序安装和卸载

    ### Android监听应用程序安装和卸载 在Android开发中,有时候我们需要让自己的应用能够感知到其他应用的安装或卸载情况,比如实现应用管理器、安全软件等场景时,就需要用到这种功能。本文将详细介绍如何在Android...

    Android卸载应用和安装应用的广播

    本文将详细讲解如何利用广播接收器(BroadcastReceiver)来监听和响应应用的安装与卸载事件。 首先,让我们了解什么是广播接收器。在Android中,BroadcastReceiver是一种特殊的组件,它能监听系统或应用程序发送的...

    Android 监听应用的安装和卸载

    在Android系统中,开发者可以通过创建自定义的BroadcastReceiver来监听应用程序的安装和卸载事件。BroadcastReceiver是Android四大组件之一,它能接收到系统或应用发送的广播消息,并执行相应的处理逻辑。以下将详细...

    Android监听应用程序安装和卸载.docx

    在Android开发中,有时我们需要监控应用程序的安装和卸载事件,以便执行相应的操作,如更新数据库、发送通知或执行其他自定义逻辑。以下是如何在Android中实现这一功能的详细步骤: 首先,我们需要创建一个...

    Android 监听程序的安装和卸载

    应用开发中有需要监听到程序是否安装或者卸载成功,在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。可以通过intent.getDataString()获得所安装的包名...

    安卓安装卸载相关-监听自身被卸载.zip

    这个压缩包“安卓安装卸载相关-监听自身被卸载.zip”包含了关于如何在Android应用中实现自我监听卸载的源码和相关说明。下面将详细阐述这一主题。 首先,我们来了解一下Android应用的生命周期。在Android系统中,每...

    安卓安装卸载相关-监听APP被卸载.rar

    在安卓系统中,安装和卸载应用程序是常见的操作。开发者有时需要监听这些事件,以便在APP被卸载时执行一些清理工作或者记录用户行为。"监听APP被卸载.rar"这个压缩包可能包含了一些示例代码或库,帮助开发者实现这一...

    安卓Android源码——监听自身应用卸载.zip

    总之,"安卓Android源码——监听自身应用卸载.zip"是一个学习如何在Android中监听应用卸载并执行后续操作的示例,它结合了BroadcastReceiver、libcurl库和Intent的使用,帮助开发者更好地理解和掌握Android系统的...

    Android监听自己的程序被卸载

    在Android系统中,开发者往往需要了解应用程序的生命周期状态,包括安装、启动、暂停、恢复以及卸载等。在某些特定场景下,比如数据分析或者服务维护,开发者可能希望在应用程序被卸载时执行某些操作,例如清理后台...

    Android应用源码之程序的安装、卸载和更新.zip

    在Android操作系统中,应用的安装、卸载和更新是用户日常操作的重要部分。这份压缩包文件"Android 程序的安装、卸载和更新"很可能是包含了一系列关于这个主题的源码示例,用于帮助开发者更深入地理解这些过程的工作...

    Android程序监听自身被卸载

    综上所述,通过注册一个BroadcastReceiver并监听ACTION_PACKAGE_REMOVED广播,我们可以实现Android应用程序监听自身被卸载并在卸载后执行特定操作,如打开浏览器。在实际开发中,需注意Android系统安全性和权限限制...

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

    特别是在卸载过程中,系统会发出ACTION_PACKAGE_REMOVED广播,这个广播事件可以被我们的应用程序捕获。 要监听应用被卸载,我们需要创建一个BroadcastReceiver,该receiver会在接收到ACTION_PACKAGE_REMOVED广播时...

    安卓安装卸载相关-应用卸载后自动弹网页.rar

    这个压缩包"安卓安装卸载相关-应用卸载后自动弹网页.rar"可能包含了一些实现这一功能的代码示例和资源。 首先,我们要理解的是,安卓系统本身并不直接支持应用被卸载时触发的回调函数。因此,要实现卸载后弹出网页...

    Android-AppUninstallWatcher,[已弃用]应用程序卸载观察程序。.zip

    4. **权限设置**:为了监听其他应用的卸载,需要在AndroidManifest.xml中添加读取系统日志的权限(READ_LOGS)和接收广播的权限(RECEIVE_BOOT_COMPLETED)。但需要注意的是,由于隐私政策的限制,READ_LOGS权限在...

    Android应用源码之程序的安装、卸载和更新-IT计算机-毕业设计.zip

    在Android平台上,应用程序的安装、卸载和更新是开发者和用户日常操作的重要组成部分。这篇毕业设计的源码Demo深入解析了这些过程,为学生提供了一次实战性的学习机会。下面我们将详细探讨Android应用的安装、卸载和...

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

    总的来说,监听Android应用被卸载的过程需要巧妙地利用系统广播和自定义组件。虽然存在一定的局限性,但在许多情况下,上述方法可以有效地满足需求。在实际开发中,需要根据具体项目需求和环境来选择合适的方式来...

    Android 常用系统广播

    Android系统广播是Android应用开发中一种重要的机制,它允许应用程序接收系统发送的事件通知。这些事件可以是硬件变化、系统状态变化或者用户的某些操作等。以下是根据提供的文件内容整理的Android常用系统广播知识...

    安卓安装卸载相关-监听自身应用卸载并在卸载之后使用libcurl三方库进行一次三方请求或者启动网页的实例工程。.rar

    1. **Android 应用生命周期**:Android 应用程序有自己的生命周期,包括创建、启动、运行、暂停、停止和销毁等状态。当用户卸载应用时,系统会先执行应用的销毁过程。在这一阶段,我们可以通过监听特定的广播事件来...

    android监听安装和卸载示例

    Android应用程序的安装和卸载事件,是由系统进行监听并全局广播的,支持1.5(android 3)以上,因此,如果想要监听获取应用的安装和卸载事件,只需要自定义一个BroadcastReceiver,来对系统广播进行监听和处理

    android监听手机app启动

    一种常见的方法是注册一个`BroadcastReceiver`来接收`ACTION_PACKAGE_ADDED`, `ACTION_PACKAGE_CHANGED`, `ACTION_PACKAGE_REMOVED`等广播事件,这些广播在其他应用安装、更新或卸载时触发。通过监听这些事件,...

Global site tag (gtag.js) - Google Analytics