0

我该如何检查?我必须使用 PackageManager 吗?谢谢 :D

4

2 回答 2

2

我这样检查(检查返回值是否不等于null):

public static Intent findFacebookClient(Context con)
{
    final String[] FacebookApps = {"com.facebook.android", "com.facebook.katana"};
    Intent facebookIntent = new Intent();
    facebookIntent.setType("text/plain");
    final PackageManager packageManager = con.getPackageManager();
    List<ResolveInfo> list = packageManager.queryIntentActivities(facebookIntent, PackageManager.MATCH_DEFAULT_ONLY);

    for (int i = 0; i < FacebookApps.length; i++)
    {
        for (ResolveInfo resolveInfo : list)
        {
            String p = resolveInfo.activityInfo.packageName;
            if (p != null && p.startsWith(FacebookApps[i]))
            {
                facebookIntent.setPackage(p);
                return facebookIntent;
            }
        }
    }
    return null;
}
于 2012-10-04T08:26:38.030 回答
1
final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm
            .getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package : " + packageInfo.packageName);
}

然后您可以检查是否packageInfo.packageName等于包含该应用程序包名称的某个字符串。

于 2012-10-04T08:14:22.420 回答