检测应用程序是否安装?
我有一个应用程序,在电话上注册自定义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; }
-
如果未安装应用程序,则需要创build用户login的网页。 说http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html
-
应用程序需要在清单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>
-
现在在调用您的应用程序的网页中,您指定了完整的链接到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/RGLHkGUpRoA
- Google Play Alpha App BM-PPH-01错误
- Facebook SDK 4.10上的NPE:尝试调用空对象引用上的接口方法java.lang.Object com.facebook.inject.Lazy.get()
- Android Studio如何手动运行gradle同步?
- android:id是什么的加号
- Android在应用程序运行时禁用屏幕超时
- 有没有办法从大规模的图像创buildxxhdpi,xhdpi,hdpi,mdpi和ldpi drawables?
- TextView的背景颜色select器
- 如何在Android中制作圆形自定义进度条
- min SDK版本/目标SDK版本与编译SDK版本有什么区别?