4

我已经为我的 Android 应用程序注册了一个 url 方案(比如说 myapp://host)。

在我的另一个应用程序上,我可以使用 Intent 启动该应用程序,但是如何检查第一个应用程序是否已安装而不启动它?

在 iOS 中,它就像

[[UIApplication sharedApplication] canOpenUrl:@"myapp://"];

Android中是否有等价物?(简单的方法)

我想使用 url 方案进行检查。我知道如何使用包名称进行检查,但我也不知道如何从 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 if an app is installed on iPhone

4

2 回答 2

3

如果您知道如何启动应用程序,则创建启动应用程序的意图,然后调用 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
于 2012-09-05T03:08:19.970 回答
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;
}
于 2014-11-27T16:53:31.423 回答