我目前正在构建一个app
和Facebook
集成的Instagram
,我需要检查用户{{1}上是否已安装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"
(Facebook)作为"com.facebook.katana"
名称的URI。
我的代码:
package
我已从我的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();
}
}
});
删除了Facebook
应用并运行了代码,但不知怎的,我仍然从phone
方法返回true
。
同样对appInstalledOrNot
也是如此,仍然不起作用。我正在使用Instagram
,我正在DataBinding
上使用它,而不是Fragment
。
非常感谢这方面的帮助。 谢谢你的阅读...
答案 0 :(得分:0)
尝试使用另一个标志:
pm.getPackageInfo(uri, 0);