繁体   English   中英

PackageManager无法检查已安装的应用程序

[英]PackageManager can't check for installed apps

我目前正在构建一个具有FacebookInstagram集成的app ,我需要检查该app是否已安装在用户device

我已经尝试了:

private boolean appInstalledOrNot(String uri)
{
    PackageManager pm = fragment.getContext().getPackageManager();
    boolean app_installed = false;
    try
    {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    }
    catch (PackageManager.NameNotFoundException e)
    {
        app_installed = false;
    }
    return app_installed ;
}

我已经传入"com.instagram.android""com.facebook.katana" (Facebook)作为package名称的URI。

我的代码:

binding.facebook.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            boolean haveApp = appInstalledOrNot("com.facebook.katana");

            if (haveApp) {
                LoginManager.getInstance().logInWithReadPermissions(SocialMediaSharingFragment.this, Arrays.asList("public_profile", "email"));
            } else {
                Toast.makeText(getContext(), "App not installed", Toast.LENGTH_SHORT).show();
            }

        }
    });

我已经从phone删除了Facebook App并运行了代码,但是不知何故我仍然从appInstalledOrNot方法返回了true Instagram也执行相同操作,但仍然无效。 如您所见,我正在使用DataBinding ,并且在Fragment而不是Activity上使用它。

非常感谢您的帮助。 谢谢阅读...

尝试使用另一个标志:

pm.getPackageInfo(uri, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM