解决问题有两个作用:

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. 3ds Max实例教程:制作雪的材质

    导言: 本教程为大家讲解使用3ds MAX制作真实的雪材质制作过程,非常简单的教程,但个人觉得讲解的非常好,希望这套比较老的教程能给你带来帮助. 下面教程开始 雪的材质看似简单,其实它的制做并不是想像 ...

  2. Ubuntu PPA 使用指南

    作者: Abhishek Prakash 译者: LCTT jlztan | 2019-01-19 11:02 一篇涵盖了在 Ubuntu 和其他 Linux 发行版中使用 PPA 的几乎所有问题的深 ...

  3. POJ1743Musical Theme(后缀数组+二分)

    题意 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题.“主题”是整个音符序列的一个子串,它需要满足如下条件: 1 ...

  4. Tomcat跨域资源共享

    1.下载Jar包 cors-filter-1.7.jar java-property-utils-1.9.jar 下载完成后将Jar拷贝到tomcat下lib目录中 2.修改web.xml配置 在29 ...

  5. code vs 1216 跳马问题

    1216 跳马问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 题目 输入描述 Input Descri ...

  6. [转载]深入JVM锁机制-synchronized

    转自:http://blog.csdn.net/chen77716/article/details/6618779,并加上少量自己的理解 目前在Java中存在两种锁机制:synchronized和Lo ...

  7. Qt之QStackedWidget

    简述 QStackedWidget继承自QFrame. QStackedWidget类提供了多页面切换的布局,一次只能看到一个界面. QStackedWidget可用于创建类似于QTabWidget提 ...

  8. Qt 3D教程(二)初步显示3D的内容

    Qt3D教程(二)初步显示3D的内容 前一篇很easy,全然就没有牵涉到3D的内容,它仅仅是我们搭建3D应用的基本框架而已,而这一篇.我们将要利用它来初步地显示3D的内容了! 本次目的是将程序中间的内 ...

  9. Implement Stack using Queues 用队列实现栈

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...

  10. spring揭秘 读书笔记 二 BeanFactory的对象注冊与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,并且IoC Service Pr ...