博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !

这个问题解决了两天时间,因为网上没有完整的解决方案,解决后分享一下给大家!

解决这个问题有两个作用:

1、不用打开App直接进入某页面

2、实现App分享到外部,同时由外部进入App的闭环。

这个话题可以分两方面来讲,一方面是从微信进入App,另一方面是从网页进入App。

咱们拿http://my.oschina.net/liucundong/blog/354029当例子来讲一下

主要通过scheme、host、path、pathPrefix等data信息来区分

两个方案都需要给跳转到的Activity加入intent-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:scheme="cundong" android:host="splash"/>

</intent-filter>

首先我们来讲微信端进入App,场景:从App分享内容到微信,再从微信直接打开App。

第一步,注册微信公众平台,相关企业信息,下载链接,Logo等 都填写完毕

第二步,分享时使用WXAppExtendObject,把链接url赋值给extInfo

第三步,在IWXAPIEventHandler接口的onReq方法的req.getType()=ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX时,发起你的跳转

第四步,跳转时需要数据,数据从哪里来,从WXEntryActivity类中onCreate方法的getIntent对象里来

从微信进入App就这样结束了。

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

接着来讲网页端,由于webView的限制,如微信、微博等都采用这个控件,所以只能分享到网页,再进入App。

原理如下:

<div>
            <a id="J-call-app" href="javascript:;" class="label">立即打开&gt;&gt;</a>
            <input id="J-download-app" type="hidden" name="storeurl" value="http://apk.hiapk.com/appinfo/com.tmall.wireless">
        </div>
 
        <script>
            (function(){
                var ua = navigator.userAgent.toLowerCase();
           
                var t;
                var url=document.location;
                var config = {
                    /*scheme:必须*/
                    scheme_IOS: 'cundong://',
                    scheme_Adr: 'cundong://splash',
                    download_url: document.getElementById('J-download-app').value,
                    timeout: 600
                };
 
                function openclient() {
                    var startTime = Date.now();
 
                    var ifr = document.createElement('iframe');
 
                    //alert(config.scheme_Adr);
                    ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;
                    ifr.style.display = 'none';
                    document.body.appendChild(ifr);
 
                    var t = setTimeout(function() {
                        var endTime = Date.now();
 
                        if (!startTime || endTime - startTime < config.timeout -200) { 
                            window.location = config.download_url;
                        } else {
                                   window.location.href=ifr.src.replace("http://","cundong://");;
                        }
                    }, config.timeout);

window.onblur = function() {
                        clearTimeout(t);
                    }
                }
                window.addEventListener("DOMContentLoaded", function(){
                    document.getElementById("J-call-app").addEventListener('click',openclient,false);
 
                }, false);
            })()
        </script>

点击打开四个字后,执行一个js,在限制时间内,如果可以打开App则打开,否则进入下载页

解决这个问题的基本思路就是这样,欢迎大家交流探讨!

最新文章

  1. 大家都在用PDA条码扫描枪管理企业仓库 PDA无线数据采集程序
  2. Nodejs express 文件上传
  3. Base64加密工具-iBlogs
  4. Web UI - Javascript之DOM Ready
  5. TextView 跑马灯
  6. Hazelcast介绍与使用
  7. 如何查看PowerShell版本
  8. AVFoundation的使用
  9. OracleCommand.CommandText 无效
  10. GCC 编绎选项 转
  11. winform 子窗体数据改变刷新父窗体 分类: WinForm 2014-05-06 18:30 246人阅读 评论(0) 收藏
  12. log在线生成器 html中如何设置浏览器中标题前的logo
  13. poj1163 dp入门
  14. Vultr VPS测试IP $5/月KVM-512MB/15G SSD/1T
  15. 201521123063 《Java程序设计》 第10周学习总结
  16. ajax请求处理和views处理函数的优先级
  17. ThinkPHP3.2 实现Mysql数据库备份
  18. 不用写代码的框架 - RobotFramework+Eclispe环境安装篇
  19. [FE] 有效开展一个前端项目1
  20. php中session入memcached

热门文章

  1. 命令行神器 cmder
  2. 移动端font-size适配
  3. PKI和加密,散列算法
  4. Base64编码字符串时数据量明显变大
  5. 学习爬虫:《Python网络数据采集》中英文PDF+代码
  6. HDU 4945 2048 DP 组合
  7. Qt之图形(QPainter的基本绘图)
  8. 微软100题第51题:和为n连续正数序列
  9. The broken pedometer-纯暴力枚举
  10. iOS 9 适配,我咋还没遇到这么多坑呢呀