您的位置:首页 > 移动开发 > Android开发

Android监听apk的添加、安装、改变、替换、卸载

2014-07-22 20:19 453 查看
原文链接:/article/7611256.html

这是我项目里需要在安装完应用后,马上能侦听到新的应用安装成功,并且更新相应的界面用到的

1.项目里添加侦听类,然后配置文件加权限,就ok

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();

}*/

}

}

<?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>

2.代码实现添加

private final BroadcastReceiver apkInstallListener = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

if(Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())){

System.out.println("**************Broadcase*************");

File file = uninstallApk.get(isDeleted);

System.out.println(file.toString()+"*****");

file.delete();

//System.out.println(uninstallApk.size()+"(*******"+uApks.size());

if(uninstallApk!=null&&uApks!=null)

{

uninstallApk.remove(isDeleted);

uApks.remove(isDeleted);

}

//清除集合里面的值

if(uninstallApk!=null)

{

System.out.println("onpause******"+uninstallApk.size());

uninstallApk.clear();

}

if(uApks!=null)

{

uApks.clear();

}

System.out.println("******应用添加***"+isDeleted);

Toast.makeText(context, "有应用被添加"+isDeleted, Toast.LENGTH_LONG).show();

}

else if(Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())){

System.out.println("*****应用被删除");

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())){

System.out.println("****应用被替换");

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();

}*/

}

};

// 注册监听

private void registerSDCardListener(){

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);

intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);

intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);

intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);

intentFilter.addDataScheme("package");

registerReceiver(apkInstallListener, intentFilter);

}

java里的调用 registerSDCardListener()
@Override

protected void onDestroy()

{

super.onDestroy();

//unregisterReceiver(apkInstallListener);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: