Android 为什么这段代码会运行?安卓

Android 为什么这段代码会运行?安卓,android,Android,当tempPackageName_pInfo=aaaa.asadsdaa时 aaaa.asadsdaa是安卓市场上不存在的软件包名称。 为什么代码在if中运行。它应该在其他地方运行 for (PackageInfo pInfo : appinstalled) { String tempPackageName_pInfo = pInfo.packageName.toString(); appinstalledTest = pm .ge

当tempPackageName_pInfo=aaaa.asadsdaa时 aaaa.asadsdaa是安卓市场上不存在的软件包名称。 为什么代码在if中运行。它应该在其他地方运行

for (PackageInfo pInfo : appinstalled) {
        String tempPackageName_pInfo = pInfo.packageName.toString();
        appinstalledTest = pm
                .getInstalledApplications(PackageManager.GET_PERMISSIONS);
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("market://details?id="
                + tempPackageName_pInfo));
        List<ResolveInfo> list = pm.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);// 0
    if (list.size() > 0) { runIf(); } else { runElse(); }
对不起,我的英语不好。

如查询活动文档中所述

检索可以为给定意图执行的所有活动


据我所知,这意味着至少有市场活动,可以为此目的进行。此方法不能依赖于市场上是否存在此特定包。

您是否使用调试器查看列表包含的内容?我认为列表必须为emptysize==0,因为android市场上不存在包aaaa.ASADSDAA。我用这个搜索所以market://details?id=aaaa.asaddsdaa 在安卓市场上也不存在。对不起,我的英语不好。不,您需要使用调试器来实际查看列表是什么,而不是您认为它应该是什么。通常情况下,直到我们使用调试器逐步调试程序并检查变量,我们才意识到我犯的小错误。是的,我认为这种方法可以回答市场上是否存在软件包。虽然有一些包重复。我不在乎这种情况。您是否有其他方法来检查市场上是否存在包名?对不起,我的英语不好。@Indyway检查市场上是否存在应用程序是完全不同的问题。据我所知,使用任何官方api都无法做到这一点。但是你可以尝试谷歌一些非官方的替代方案,比如请注意,我自己还没有尝试过这个api,我曾经尝试过,但我不知道如何使用它。我曾经阅读过这个文档,我不明白我给出了什么,例如,请帮帮我。@Indyway不幸的是,我不得不体验这个api,无法帮助您。我所能推荐的就是遵循这个示例及其讨论线程