![](/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.