Android 如何查找使用Intent.ACTION\u package\u删除时已卸载的包名
我有一个应用程序,它记录了设备上安装的内部开发的应用程序。安装后,将调用Intent.PACKAGE_ADDED的广播接收器,并使用以下代码记录包名:Android 如何查找使用Intent.ACTION\u package\u删除时已卸载的包名,android,android-intent,android-package-managers,Android,Android Intent,Android Package Managers,我有一个应用程序,它记录了设备上安装的内部开发的应用程序。安装后,将调用Intent.PACKAGE_ADDED的广播接收器,并使用以下代码记录包名: public class NewInstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle b = intent.getExtras
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_的广播接收器时,所有通过唯一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);
}
}
总而言之,问题是:
删除节目后,如何在广播接收器中引用Intent.package_removed的包名称
谢谢软件包名称符合您从BroadcasReceiver获得的意图,请使用“getData()”函数,其中包含已安装/卸载软件包的组件名称。效果非常好。。。仅使用了getData().getSchemeSpecificPart()。谢谢当我打印intent.toString()时,我可以看到包名,但是当我使用intent.getData().getSchemeSpecificPart()时,我会得到一个空字符串。我做错了什么?@gonzobrains你可能没有制定计划?在清单中,它应该是这样的:
。我还从getPackagesForUid(uid)中获取null。我想要的是获取为当前用户安装的所有软件包的列表。有人能提供一些意见吗?