我有一个应用程序在电话上注册自定义URI的处理程序.我可以通过手机网页链接到"myapp:// act/launch"来启动应用程序.仅当我的应用程序安装在设备上时,此方法才有效.我想要做的是检测浏览器是否支持URI Scheme,然后如果找不到URI方案的处理程序,则提示我自己的消息"请下载应用程序等...".
有没有办法可以从Web浏览器中检测或找到电话上的URL方案处理程序列表?
Jai*_* M. 63
如果您需要知道用户设备上是否安装了特定应用程序,则可以使用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)
boa*_*der 14
如果未安装应用程序,您需要创建用户登陆的网页.说http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html
该应用程序需要在清单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)现在,在调用您的应用程序的网页中,您指定了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/RGLHkGUpRoA
| 归档时间: |
|
| 查看次数: |
38060 次 |
| 最近记录: |