解决问题有两个作用:

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则打开,否则进入下载页

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

Android怎样从外部跳进App的更多相关文章

  1. Android如何从外部跳进App

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 这个问题解决了两天时间,因为网上没有完整的解决方案,解决后分享 ...

  2. Android - 分享内容 - 给其他APP发送内容

    创建一个intent时,必须要指定intent将要触发的操作.Android定义了很多操作,包括ACTION_SEND,就象可以猜到的一样,表示intent是把数据从一个activity发送给另一个, ...

  3. Android M新特性之APP Link

    The Android M Developer Preview introduces support for App Links, which improves upon existing link ...

  4. Android Studio 导入外部lib文件

    Android Studio 导入外部lib文件   1.将jar包放入Module里的lib文件夹中.(自己创建lib文件夹) 2.在project选中jar包点击右键"Add as li ...

  5. 介绍开发Android手持终端PDA盘点APP软件

    介绍开发Android手持终端PDA盘点APP软件 软件需要自动识别我导入的TXT格式或者excl格式的盘点表,然后自动生成一个复盘数据,做AB比对,界面上需要显示的有总数量,单品数量,条码,编码,商 ...

  6. 关于android源码中的APP编译时引用隐藏的API出现的问题

    今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的 ...

  7. Android - 分享内容 - 接收其他APP的内容

    就象程序可以发送数据给其他程序,所以也可以接收其他程序的数据.想一下用户如何和程序交互,以及想从其他程序接收什么样类型的数据.例如,一个社交程序可能对接收其他程序的文字(比如有趣的网址)感兴趣.Goo ...

  8. Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app

    出现的问题: Error:Execution failed for task ':app:preDebugAndroidTestBuild'.> Conflict with dependency ...

  9. 解决Ubuntu 16.04 上Android Studio2.3上面运行APP时提示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs的问题

    本人工作环境:Ubuntu 16.04 LTS + Android Studio 2.3 AVD启动之后,运行APP,报错提示: DELETE_FAILED_INTERNAL_ERROR Error ...

随机推荐

  1. Matlab---从入门到精通 Chapter 4 编程基础

    ---恢复内容开始--- 4-1 M文件编辑器 在命令窗口输入edit命令,可以打开M文件编辑器,创建新的M文件 在命令行中输入edit filename,那么可以打开在当前目录环境下的M文件 4-2 ...

  2. UVA-12083 Guardian of Decency 二分图 最大独立集

    题目链接:https://cn.vjudge.net/problem/UVA-12083 题意 学校组织去郊游,选择最多人数,使得任意两个人之间不能谈恋爱 不恋爱条件是高差大于40.同性.喜欢的音乐风 ...

  3. luogu P1592 互质(欧拉函数)

    题意 (n<=106,k<=108) 题解 一开始以为是搜索. 但想想不对,翻了一眼题解发现是欧拉函数. 因为 gcd(a,b)=gcd(a,a+b) 所以和n互质的数应该是类似a1,a2 ...

  4. Linux学习之计算机基础理论

    一.描述计算机的组成及其功能. 计算机系统是由硬件系统(hardware)和软件系统(software system)两部分组成. 硬件系统: 从硬件基本结构上来讲,计算机是由运算器.控制器.存储器. ...

  5. C语言中头文件尖括号和引号的区别

    用include 引用头文件时,双引号和尖括号的区别: 1.双引号:引用非标准库的头文件,编译器首先在程序源文件所在目录查找,如果未找到,则去系统默认目录查找,通常用于引用用户自定义的头文件. 2.尖 ...

  6. PNG文件结构分析

    http://blog.163.com/iwait2012@126/blog/static/16947232820124411174877/ PNG文件结构分析 对于一个PNG文件来说,其文件头总是由 ...

  7. 洛谷 P3102 [USACO14FEB]秘密代码Secret Code

    P3102 [USACO14FEB]秘密代码Secret Code 题目描述 Farmer John has secret message that he wants to hide from his ...

  8. Unity渲染

    我们先大概了解一下对渲染的优先级有影响的几个因素 1.Camera.Depth 不同相机的深度,在渲染顺序的优先度里面是最高的,Depth越大,渲染的图像越靠前 2.Render.SortingOrd ...

  9. jquery-easyui的datagrid在checkbox多选时,行选中不正确应,去除高亮的解决方法

    jquery-easyui的datagrid在checkbox多选时,行选中不正确应,去除高亮的解决方法 工作中用到一个具有多选功能的easyui-datagrid在处理cell的点击事件时,不同 ...

  10. nyoj--12--喷水装置(二)(区间覆盖问题+贪心)

    喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水 ...