android系统监测应用的安装,升级,卸载,可以通过 intent.getDataString().substring(8);
如下边:
复制代码
这样再广播中就可以监听到发生变化的APP的包名了,其他信息可通过包名获取:
复制代码
在此记录。
如下边:
- public class PackageReceive extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
-
- String packageName = intent.getDataString().substring(8);
- if (action.equals(Intent.ACTION_PACKAGE_ADDED)) {
-
- } else if (action.equals(Intent.ACTION_PACKAGE_REPLACED)) {
-
- } else if (action.equals(Intent.ACTION_PACKAGE_REMOVED)) {
-
- }
- }
- }
- /**
-
- * 通过应用包名获取已安装应用信息
-
- * @param packagename 包名
-
- * @param ctx 上下文
-
- * 返回当前安装的应用信息
-
- */
-
- public void getAppInfoByPackageName(String packagename,Context ctx) {
-
- PackageInfo pI = null;
-
- try {
-
- pI = ctx.getPackageManager().getPackageInfo(packagename, 0);
-
- } catch (NameNotFoundException e) {
-
- e.printStackTrace();
-
- }
-
- //获取软件名称
-
- String appName = pI.applicationInfo.loadLabel(ctx.getPackageManager()).toString();
-
- //获取软件图标
-
- Drawable icon = pI.applicationInfo.loadIcon(ctx.getPackageManager());
-
- //获取软件版本号
-
- String versionName = String.valueOf(pI.versionName)
-
- //获取应用大小
-
- long appSize = new File(pI.applicationInfo.publicSourceDir).length() / 1024;
-
- float lastSize = (float) (((int) (appSize / 1024.0 * 100)) / 100.0);
-
- if (appSize >= 1024) {
-
- //应用大小为 lastSize + "MB"
-
- } else {
-
- //应用大小为 appSize + "KB"
-
- }
-
- }
-
- }