![](/img/trans.png)
[英]Android : How to get the List of Installed apps that use Internet Access - PackageManager
[英]PackageManager can't check for installed apps
我目前正在构建一个具有Facebook
和Instagram
集成的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.