安卓 - 检查Facebook应用程序是否存在返回错误的结果



如果FB本机应用程序安装在应用程序和浏览器中,我将打开在通知中收到的链接,否则使用以下代码:

PackageManager packageManager = context.getPackageManager();
try {
    packageManager.getPackageInfo("com.facebook.katana", PackageManager.GET_ACTIVITIES);
    return context.getString(R.string.fb_app_prefix) + fb_url;
} catch (PackageManager.NameNotFoundException e) {
    return context.getString(R.string.fb_site_prefix) + fb_url; //normal web mUrl
}

它适用于大多数设备(包括模拟器),但在其中一些设备中,尽管未安装该应用程序,但它不会引发错误。

我的代码有什么问题?

我可以为我拥有的每个链接添加以下代码,但不确定它是否"健康":

Intent testIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(fb_app_url));
if (testIntent.resolveActivity(packageManager) != null) {
    return fb_app_url;
}
public static boolean isPackageExisted(Context c, String targetPackage) {
 PackageManager pm = c.getPackageManager();
    try {
        PackageInfo info = pm.getPackageInfo(targetPackage,
                PackageManager.GET_META_DATA);
    } catch (NameNotFoundException e) {
        return false;
    }
    return true;
}

最新更新