如何查找使用Intent.ACTION_PACKAGE_REMOVED时已经卸载的软件包名称

我有一个应用程序保持安装在设备上的内部开发应用程序的日志。 在安装时,将调用Intent.PACKAGE_ADDED的广播接收器,并使用以下代码logging包名称:

public class NewInstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle b = intent.getExtras(); int uid = b.getInt(Intent.EXTRA_UID); String[] packages = context.getPackageManager().getPackagesForUid(uid); ApplicationService appService = new ApplicationService(context); appService.ApplicationInstalled(packages); } } 

我面对的问题是当使用Intent.PACKAGE_REMOVED广播接收器时,通过唯一标识(UID)的所有对包的引用都会返回空信息(正如您所期望的,因为它已被卸载)。 我有一个暂时的解决scheme,但它不是很优雅,下一个版本,我希望有更清晰的代码。 代码应该如何工作的一个例子:

 public class RemoveApplicationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle b = intent.getExtras(); int uid = b.getInt(Intent.EXTRA_UID); String[] packages = context.getPackageManager().getPackagesForUid(uid); ApplicationService appService = new ApplicationService(context); appService.ApplicationRemoved(packages); } } 

所以回顾一下,问题是:

在删除程序后,如何在Intent.PACKAGE_REMOVED的广播接收器中引用包名称。

谢谢

Solutions Collecting From Web of "如何查找使用Intent.ACTION_PACKAGE_REMOVED时已经卸载的软件包名称"