Android技术点笔记--(安装应用和卸载应用广播)

Android技术点笔记--(安装应用和卸载应用广播)

前言:总结Android中安装应用和卸载应用的广播使用。

android系统中,安装和卸载都会发送出相应的广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。

可以通过intent.getDataString()获得所安装的包名。卸载程序时系统发android.intent.action.PACKAGE_REMOVED广播。同样intent.getDataString()获得所卸载的包名。可以根据实际需求做相应的操作。

示例:

新建BroadcastReceiver类,接受相应的广播并按需求进行处理。

public class MyReceiver extends BroadcastReceiver {        

    @Override
    public void onReceive(Context context, Intent intent) {

        //接收广播:系统启动完成后运行程序
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
             Intent newIntent = new Intent(context, xxxActivity.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 xxx");        
        }

    }

注:修改AndroidManifest.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="app.ui">

    <application>
        <receiver android:name=".MyReceiver"
                  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" />
<!-- 注意!! 这句必须要加,否则接收不到BroadCast -->
            </intent-filter>
        </receiver>

        <activity android:name=".xxxActivity" android:label="XXX">
            <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>
时间: 2024-10-29 19:10:23

Android技术点笔记--(安装应用和卸载应用广播)的相关文章

Android:日常学习笔记(9)———探究持久化技术

Android:日常学习笔记(9)---探究持久化技术 引入持久化技术 什么是持久化技术 持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. Android系统提供的三种持久化技术: 文件存储.SharedPreference(使用共享首选项)存储以及数据库存储. 文件存储 说明: 您可以直接在设备的内部存储中保存文件.默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件. 当用户卸载您的应用时,这些文

Android随笔之——静默安装、卸载

随笔之所以叫随笔,就是太随意了,说起来,之前的闹钟系列随笔还没写完,争取在十月结束之前找时间把它给写了吧.今天要讲的Android APK的静默安装.卸载.网上关于静默卸载的教程有很多,更有说要调用隐藏API,在源码下用MM命令编译生成APK的,反正我能力有限,没一一研究过,这里选择一种我试验成功的来讲. 静默安装.卸载的好处就是你可以偷偷摸摸,干点坏事什么的,哈哈~ 一.准备工作 要实现静默安装.卸载,首先你要有root权限,能把你的静默安装.卸载程序移动到system/app目录下. 1.用

Android静默安装和静默卸载

静默顾名思义就是静静的默默地,静默安装和静默卸载的意思也就是说在后台默默地安装和卸载. 最近的一个app应用分发的项目中app下载的模块,下载完成之后,用户可以通过这个app进行安装,为了提高用户的体验,我就加入了静默安装和卸载功能,然后还加入了使用am命令启动某个Activity. 这个项目中静默的方式实现代码如下: 首先判断是否有root权限,如果有利用静默方式,否则利用意图实现app安装和卸载操作. package com.example.test; import java.io.File

Android静默安装和静默卸载代码

静默顾名思义就是静静的默默地,静默安装和静默卸载的意思也就是说在后台默默地安装和卸载. 最近的一个app应用分发的项目中app下载的模块,下载完成之后,用户可以通过这个app进行安装,为了提高用户的体验,我就加入了静默安装和卸载功能,然后还加入了使用am命令启动某个Activity. 这个项目中静默的方式实现代码如下: 首先判断是否有root权限,如果有利用静默方式,否则利用意图实现app安装和卸载操作. 1 package com.example.test; 2 3 import java.i

Android NDK学习笔记(一) 为什么要用NDK?

NDK是什么 NDK是Native Development Kit的简称,即本地开发工具包.通过NDK,Android允许开发人员使用本地代码语言(例如C/C++)来完成应用的部分(甚至全部)功能.注意:由于翻译原因,有些地方也把Native翻译为"原生". NDK是SDK的一个补充,可以帮助你做这些事情: 生成可以在ARM CPU,Android 1.5(及以上)平台运行的JNI兼容的共享库. 将生成的共享库放置在应用程序项目路径的合适位置,使其能自动地添加进你最终的(和经过签名的)

Android技术19:Android系统架构

Android系统架构是学习Android最基本的知识点,经常在技术面试过程中涉及到有关问题,接下来对Android系统架构进行总结. Android官方文档提供资料显示:Android系统分为4个层次,从低到高依次为Linux kernel(Linux内核层),Libraries和Android运行时Runtime,Android Framework,Applications. 1.Applications应用层 该层主要是运行在Andorid系统上的应用程序,如Home,SMS,Contac

Android群英传笔记——第九章:Android系统信息和安全机制

Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个android帝国的强弱,所以厂商喜欢打配置战,本节就要是讲 Android系统信息的获取 PackageManager的使用 ActivityManager的使用 Android安全机制 一. Android系统信息的获取 由于android手机的开源性,手机的配置各种各样,那些优化大师之类的东西

java/android 设计模式学习笔记(16)---命令模式

这篇博客我们来介绍一下命令模式(Command Pattern),它是行为型设计模式之一.命令模式相对于其他的设计模式更为灵活多变,我们接触比较多的命令模式个例无非就是程序菜单命令,如在操作系统中,我们点击关机命令,系统就会执行一系列的操作,如先是暂停处理事件,保存系统的一些配置,然后结束程序进程,最后调用内核命令关闭计算机等,对于这一系列的命令,用户不用去管,用户只需点击系统的关机按钮即可完成如上一系列的命令.而我们的命令模式其实也与之相同,将一系列的方法调用封装,用户只需调用一个方法执行,那

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl