检测程序的应用程序是否安装在Android(Detecting programmatically w

2019-09-22 03:47发布

我已经注册的URL方案为我的Android应用(假设MYAPP://主机)。

在我的其他应用程序,我可以通过使用意图启动该应用程序,但我要如何检查是否安装了第一个应用程序,而无需启动呢?

在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版本: 编程检测一个应用程序是否安装在iPhone上

Answer 1:

如果你知道如何启动应用程序,然后创建一个启动您的应用的意图,然后调用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


Answer 2:

我使用类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;
}


文章来源: Detecting programmatically whether an app is installed on Android