Android--通过网页打开APP并传值详解

来源:互联网 发布:python与go开发web应用 编辑:程序博客网 时间:2024/06/05 09:58

        本来这篇博客应该写Git的,但是由于最近项目比较忙,Git的内容还没有整理完(因为还有GitLab以及Github的内容),所以先写了这片博客总结以下比较零碎的东西。现在正在做商城类四网合一开发,所以从网页通过连接点击打开App以及从网页传数据到APP便成为必须,因为刚做过在加上内容比较少,所以先做一下总结,以便自己以后做复习,也可以为需要的人提供一些帮助。能力有限,欢迎各位大神多提不同意见进行交流。

       在使用网页版京东时可以看到就有此功能的实现,而本篇文章主要介绍通过网页点击连接如果存在此APP则打开,不存在则下载此APP,而在Google的官方文档中也有相关介绍,该文档给出了两种从浏览器网页打开APP的方式:

       第一种:用户自定义的URI scheme  (Custom URI scheme)         第二种:使用“intent”语法(Intent_based URI)

       Google的官方文档地址连接:https://developer.chrome.com/multidevice/android/intents

      好了,废话不多说进入主题,下面我们使用第一种方式实现该功能。

 使用Custom Scheme URI打开APP

此红色部分(自定义Uri)引用的博客是:http://blog.csdn.net/buptlzx/article/details/9837137

        就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:
scheme://host:port/path
举个实际的例子:
content://com.example.project:200/folder/subfolder/etc ?arg0=1&arg1=2
\---------/  \---------------------------/ \---/ \--------------------------/ \--------------------------/(query我们要传的值)
scheme                 host               port        path (我们要传的值如果是传多个值使用&)
                \--------------------------------/
                          authority



       1,我们先写一个简单的html文件,使用超链接的方式添加自定义的uri(因为现在自己也正在学习h5,所以能写的东西不多,凑合者看),我写的比较多,uri可以简单些成:<a href="a://b.com/?t1=k&t2=0">

<html><meta charset="UTF-8">   <body>     <h1>Test Scheme</h1> <!--自动加载隐藏页面跳转-->      <!--手动点击跳转-->      <a href="ckck://myProject.com:80/mypath?name=从html页面传过来的值之我爱中国">点击打开APP并将name的值传过去</a>   </body></html>

    2, 然后需要在想要打开的App的AndroidManifest.xml文件中添加过滤器intent-filter,如下图所示:

要获得html页面传过来的值我们需要在Activity中添加下面的代码:

  protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mTextView= (TextView) findViewById(R.id.tv_main_show);        Intent intent = getIntent();        Uri uri=intent.getData();        if(uri!=null){            String name=uri.getQueryParameter("name");            String scheme= uri.getScheme();            String host=uri.getHost();            String port=uri.getPort()+"";            String path=uri.getPath();            String query=uri.getQuery();            mTextView.setText("获得的数据name="+name+"/r"+"scheme"+scheme+"/r"+"host" +                    "host"+host+"/r"+"port"+port+"/r"+"path"+path+"/r"+"query"+query);        }

然后使用手机浏览器打开html文件就可以打开手机上的APP并获取从html页面传过来的值:

       

  3,实现通过网页打开APP如果手机中没有此APP就去下载:

 至于这个功能的实现我主要参考了一篇文章,作者讲的非常详细了,有需要的可以自己去看一下。
 地址奉上:https://my.oschina.net/liucundong/blog/354029


时间有限(最近项目比较忙) 至于第二种方式实现该功能以及实现的风险可以参考另一篇博客,以后有时间了再将其他的内容补上。

      博客地址:http://blog.csdn.net/alimobilesecurity/article/details/51209990






















      

  



 


原创粉丝点击