检测应用程序是否安装?

我有一个应用程序,在电话上注册自定义URI的处理程序。 我可以通过从手机网页链接到“myapp:// act / launch”来启动应用程序。 这只有当我的应用程序安装在设备上才有效。 我想要做的是检测是否URI浏览器支持的URIscheme,然后提示我自己的消息说:“请下载应用程序等…”如果没有findURIscheme的处理程序。

有没有一种方法可以从Web浏览器中检测或查找手机上的URL计划处理程序列表?

从Android的方法

如果您需要知道用户设备上是否安装了特定的应用程序,则可以使用PackageManager。 从一个Context类(例如一个Activity或一个Service)你可以调用getPackageManager()。 这给了你很多方法,其中之一就是getPackageInfo()。 以下是您可能使用的方法。 你可以这样调用它:

isAppInstalled("com.simexusa.campusmaps_full"); private boolean isAppInstalled(String packageName) { PackageManager pm = getPackageManager(); boolean installed = false; try { pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); installed = true; } catch (PackageManager.NameNotFoundException e) { installed = false; } return installed; } 
  1. 如果未安装应用程序,则需要创build用户login的网页。 说http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. 应用程序需要在清单XML文件主机www.yourcompany.com,模式“http”和path参数中注册,以便应用程序不在明细表意图filter中安装着陆页:

     <!-- These intents are used to launch the app from the web page--> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="www.yourcompany.com" android:path="/android/android_app_is_not_installed_landing_page.html" /> </intent-filter> 
  3. 现在在调用您的应用程序的网页中,您指定了完整的链接到android_app_is_not_installed_landing_page.html,然后是要传递给应用程序的任何参数:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? '>点击这里启动应用程序,如果它安装

如果安装了应用程序,它将启动并通过整个http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html ? 意图它需要parsing,提​​取和做它应该做的任何事情。

如果未安装应用程序,则Android Web浏览器将打开“未安装Android应用程序”的login页面http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o。 该页面应该提示用户安装该应用程序并提供从Android Marketplace安装的链接。

发现这写在这里: https : //groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGU​​pRoA