我有一个应用程序正在保存安装在设备上的内部开发的应用程序的日志。在安装了Intent.PACKAGE_ADDED广播接收器被调用,使用下面的代码记录了软件包名称:如何查找使用Intent时已被卸载的软件包名称.ACTION_PACKAGE_REMOVED
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广播接收机时的问题,所有参考包通过唯一的ID(UID)返回空信息(正如您所期望的,因为它已被卸载)。我有一个暂时的解决方案,但它不是很优雅,下一个版本我希望有更清晰的代码。的代码应该如何工作的一个例子:
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);
}
}
因此,要回顾一下,问题是:
如何,程序已被删除后,我可以在意向广播接收器参考软件包的名称。 PACKAGE_REMOVED。
感谢
我也从getPackagesForUid(uid)中获取null。我想要的是获取当前用户安装的所有软件包的列表。任何人都可以提供一些输入吗? – Pratik 2013-09-26 20:44:45