文档章节

通过浏览器直接打开Android应用程序

Cundong
 Cundong
发布于 2013/10/14 10:59
字数 451
阅读 19818
收藏 25

   Update:

   更新了实现方式http://my.oschina.net/liucundong/blog/354029

   2014-12-9

---------我是分割线------------------------------------------------------------------------------

    原文:

    最近遇到这么一个需求: 
    当用户在手机浏览器中点击一个按钮时,如果手机上已经该应用程序,则直接打开,如果没有安装,则转向应用下载页面。 再详细一点就是:通过点击网页中一个按钮,打开本地某个Activity(如果有的话)或用浏览器打开某个url。

    查了一下文档,Android是支持这个的: 

http://developer.android.com/guide/topics/manifest/data-element.html

    解释一下文档中的描述:scheme://host:port/path or pathPrefix or pathPattern

这里面定义的schema+host+port+(path or pathPrefix or pathPattern)能拼凑出一个http链接,包含这个filter的Activity,能处理这个http链接。

实现:

  • 网页代码

点击这个按钮:

<a id="applink1" href="http://test.xx.com/demo/test.php">打开</a>

在 http://test.xx.com/demo/test.php中,直接开始下载xxxx.apk。

  • Activity代码

给目标Activity增加以下filter:

<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:host="test.xx.com " 
       android:path="/demo/test.php" 
       android:scheme="http" /> 
</intent-filter>

增加该filter后,该Activity就能处理 http://test.xx.com/demo/test.php在浏览器中点击“开始”,发起对该URL的请求时,如果本机安装了这个应用,系统就会弹出一个选择,询问你想使用浏览器打开,还是使用该应用打开,如下图:


如果本机没有安装这个应用,则直接会使用浏览器(多个浏览器的话,还需要选择一下)打开 http://test.xx.com/demo/test.php,浏览器会提示你下载应用,如下图:



by @Cundong

2014年12月9日:

更新了实现方式:http://my.oschina.net/liucundong/blog/354029

© 著作权归作者所有

共有 人打赏支持
Cundong
粉丝 184
博文 28
码字总数 30973
作品 0
海淀
私信 提问
加载中

评论(2)

Cundong
Cundong

引用来自“狼毒花”的评论

你好,能说详细一点的吗?我遇到这样的问题了!在浏览器里面打开本地apk,失败了!多谢 了!
http://my.oschina.net/liucundong/blog/354029
狼毒花
你好,能说详细一点的吗?我遇到这样的问题了!在浏览器里面打开本地apk,失败了!多谢 了!
Android上面通过URL来启动本地应用

场景:通过浏览器打开URL或者扫描软件扫描URL来启动本地应用 Activity配置: [html] view plaincopy <application android:allowBackup="true" android:icon="@drawable/ic_launcher" andro......

simpower
2014/10/04
0
0
Android开发——通过扫描二维码,打开或者下载Android应用

0、呵呵 在实现这个功能的时候,被不同的浏览器折磨的胃疼,最后实现了勉强能用,也查考了一下其他人的博客 android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据 andr...

Jseven1989
2014/02/07
0
1
更新:通过浏览器直接打开Android应用程序

之前写过一篇blog,介绍如何通过点击手机浏览器中的链接,直接打开本地Android App。 实现方式不太完美,最近看了微博、京东的手机版网页,感觉他们的实现方式很不错,研究了一下,实现以下效...

Cundong
2014/12/09
0
64
Android Activity中的四种启动模式

Android总Activity的启动模式分为四种: <activity android:name=".MainActivity" android:launchMode="standard" /> 【standard】 默认模式启动模式,每次激活Activity时都会创建Activity,......

恰同学少年
2015/07/27
0
0
Android Activity 和 Task 设计指导

Activity and Task Design 译者署名:深夜未眠 译者链接:http://chris1012f.javaeye.com/ 版本:Android 3.1 r1 原文 http://developer.android.com/guide/practices/ui_guidelines/activit......

阿酷
2011/11/17
5.7K
2

没有更多内容

加载失败,请刷新页面

加载更多

四、RabbitMQ3.7在CentOS7下的安装

安装依赖 sudo yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git 创建yum源 vi /etc/yum.repos.d/rabbitmq-erlang.repo [......

XuePeng77
今天
2
0
android 延长Toast的时长

示例:myToast(5000,"hello"); public void myToast(int showTime, String msg) { Toast hello = Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT); new CountDownTimer(......

雨焰
昨天
4
0
浅谈mybatis的日志适配模式

Java开发中经常用到的日志框架有很多,Log4j、Log4j2、slf4j等等,Mybatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器。有关适配器模式例子可以参考 设计...

算法之名
昨天
13
0
大数据教程(13.6)sqoop使用教程

上一章节,介绍了sqoop数据迁移工具安装以及简单导入实例的相关知识;本篇博客,博主将继续为小伙伴们分享sqoop的使用。 一、sqoop数据导入 (1)、导入关系表到HIVE ./sqoop import --connect...

em_aaron
昨天
3
0
Git cherry-pick 使用总结

应用背景:假设现在有两个分支:dev_01, dev_02. 如果我想把dev_01分支上的某几个commit合并到dev_02分支, 那么怎么办呢? 这就是cherry-pick的工作了。cherry-pick会捡选某些commit, 即把某...

天王盖地虎626
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部