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

来源:互联网 发布:node schedule 不好使 编辑:程序博客网 时间:2024/06/05 16:53

转自:http://blog.csdn.net/HuoHao_Blogs/article/details/72461107?locationNum=2&fps=1


本来这篇博客应该写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] view plain copy
  1. <html>  
  2. <meta charset="UTF-8">  
  3.    <body>  
  4.      <h1>Test Scheme</h1> <!--自动加载隐藏页面跳转-->  
  5.       <!--手动点击跳转-->  
  6.       <a href="ckck://myProject.com:80/mypath?name=从html页面传过来的值之我爱中国">点击打开APP并将name的值传过去</a>  
  7.    </body>  
  8. </html>  

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

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

[java] view plain copy
  1. <span style="font-size:18px;">  protected void onCreate(Bundle savedInstanceState) {  
  2.         super.onCreate(savedInstanceState);  
  3.         setContentView(R.layout.activity_main);  
  4.         mTextView= (TextView) findViewById(R.id.tv_main_show);  
  5.         Intent intent = getIntent();  
  6.         Uri uri=intent.getData();  
  7.         if(uri!=null){  
  8.             String name=uri.getQueryParameter("name");  
  9.             String scheme= uri.getScheme();  
  10.             String host=uri.getHost();  
  11.             String port=uri.getPort()+"";  
  12.             String path=uri.getPath();  
  13.             String query=uri.getQuery();  
  14.             mTextView.setText("获得的数据name="+name+"/r"+"scheme"+scheme+"/r"+"host" +  
  15.                     "host"+host+"/r"+"port"+port+"/r"+"path"+path+"/r"+"query"+query);  
  16.         }</span>  

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

        

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

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


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

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



原创粉丝点击