检测是否安装了应用程序?

Jef*_*eff 23 android

我有一个应用程序在电话上注册自定义URI的处理程序.我可以通过手机网页链接到"myapp:// act/launch"来启动应用程序.仅当我的应用程序安装在设备上时,此方法才有效.我想要做的是检测浏览器是否支持URI Scheme,然后如果找不到URI方案的处理程序,则提示我自己的消息"请下载应用程序等...".

有没有办法可以从Web浏览器中检测或找到电话上的URL方案处理程序列表?

Jai*_* M. 63

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 他特别要求通过网络浏览器完成. (13认同)
  • 无论如何:"uri"是方法的正确参数名称吗?packageName会更好吗? (3认同)

boa*_*der 14

  1. 如果未安装应用程序,您需要创建用户登陆的网页.说http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. 该应用程序需要在清单XML文件主机www.yourcompany.com,架构"http"和应用程序未在清单意图过滤器中安装登录页面的路径参数中注册:

    <!-- 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>
    
    Run Code Online (Sandbox Code Playgroud)
  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?' 意图是需要解析,提​​取并做任何应该做的事情.

如果未安装该应用,则Android Web浏览器将打开"未安装Android应用"登录页面 http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o.该页面应该通知用户安装应用程序并提供从Android市场安装它的链接.

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

  • 那么为什么通过downvote驱动,因为它实际上回答了他所问的问题? (2认同)