我已经为我的Android应用注册了一个url方案(让我们说myapp:// host)。
在我的其他应用程序上,我可以使用Intent启动该应用程序,但如何在不启动它的情况下检查是否安装了第一个应用程序?
在iOS中,它就像
一样简单[[UIApplication sharedApplication] canOpenUrl:@"myapp://"];
在Android中是否有同等效力? (简单方法)
我想查看使用网址方案。我知道如何使用包名来检查,但我不知道如何从PackageInfo获取url方案......(更难的方式)
PackageManager pm = m_cContext.getPackageManager();
boolean installed = false;
try {
@SuppressWarnings("unused")
PackageInfo pInfo = pm.getPackageInfo(szPackageName, PackageManager.GET_ACTIVITIES);
installed = true;
}
catch (PackageManager.NameNotFoundException e) {
installed = false;
}
提前致谢!
注意:这是针对iOS的同一问题的Android版本: Detecting programmatically whether an app is installed on iPhone
答案 0 :(得分:2)
如果您知道如何启动应用,请创建启动应用的意图,然后调用queryIntentActivities
Intent intent = //your app launching intent goes here
PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> resolvedActivities = packageManager.queryIntentActivities(intent,0);
if(resolvedActivities.size() >0)
\\present
答案 1 :(得分:0)
我在静态方法中使用 PackageManager 类中的 queryIntentActivities :
public static boolean canOpenIntent(Context context, Intent intent)
{
boolean canOpenUrl = false;
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> resolvedActivities = packageManager.queryIntentActivities(intent, 0);
if(resolvedActivities.size() > 0)
canOpenUrl = true;
return canOpenUrl;
}