Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何查找使用Intent.ACTION\u package\u删除时已卸载的包名_Android_Android Intent_Android Package Managers - Fatal编程技术网

Android 如何查找使用Intent.ACTION\u package\u删除时已卸载的包名

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

我有一个应用程序,它记录了设备上安装的内部开发的应用程序。安装后,将调用Intent.PACKAGE_ADDED的广播接收器,并使用以下代码记录包名:

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。我想要的是获取为当前用户安装的所有软件包的列表。有人能提供一些意见吗?