首页 > 系统 > Android > 正文

Android编程监听APK安装与删除等过程的方法

2019-10-22 18:25:56
字体:
来源:转载
供稿:网友

本文实例讲述了Android编程监听APK安装与删除等过程的方法。分享给大家供大家参考,具体如下:

软件下载后的一系列动作监听:先前是通过Service监听扫描获取状态,以后用这个方法测试使用

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>

代码实现添加:

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

@Overrideprotected void onDestroy(){ super.onDestroy(); //unregisterReceiver(apkInstallListener);}

希望本文所述对大家Android程序设计有所帮助。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表