博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数...
阅读量:5742 次
发布时间:2019-06-18

本文共 2871 字,大约阅读时间需要 9 分钟。

点击浏览器中的URL链接,启动特定的App。

  1. 首先做成HTML的页面,页面内容格式如下:
启动应用程序

 

这一句就可以了。各个项目含义如下所示:scheme:判别启动的App。 ※详细后述host:适当记述path:传值时必须的key     ※没有也可以query:获取值的Key和Value  ※没有也可以
  1. 作为测试好好写了一下,如下:
            
Insert title here
打开app
打开app1
打开app2
  1. 接下来是Android端。
    首先在AndroidManifest.xml的MAIN Activity下追加以下内容。(启动Activity时给予)
    ※必须添加项

HTML记述的内容加入

可以复制代码,这样的话,没有问题。

  1. 接下来在Activity中需要取值的地方添加以下代码,我是直接写在OnCreate函数里的:
Intent i_getvalue = getIntent();String action = i_getvalue.getAction();if(Intent.ACTION_VIEW.equals(action)){ Uri uri = i_getvalue.getData(); if(uri != null){ String name = uri.getQueryParameter("name"); String age= uri.getQueryParameter("age"); } }

这样就能获取到URL传递过来的值了。

我在测试的超链接上添加name的属性是一个需要请求服务器的URL,这样的话,我们可以通过根据这个URL请求服务器,获取到一些我们所需要的数据,这个数据的是以Json的形式存在,通过volley请求下来数据,并使用Gson解析后得到数据。

public static void getUrlValue(Intent i_getvalue, final String tag, Context context) {        String action = i_getvalue.getAction(); if (Intent.ACTION_VIEW.equals(action)) { Uri uri = i_getvalue.getData(); if (uri != null) { mRequestQueue = Volley.newRequestQueue(context); final String name = uri.getQueryParameter("name"); // System.out.print(name); // final String name = "http://124.200.36.22:8000/test/namelist.json"; String age = uri.getQueryParameter("age"); String host = uri.getHost(); String dataString = i_getvalue.getDataString(); String id = uri.getQueryParameter("id"); String path = uri.getPath(); String path1 = uri.getEncodedPath(); String queryString = uri.getQuery(); new Thread(new Runnable() { @Override public void run() { if (name != null) { JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(name.toString().trim(), null, new Response.Listener
() { @Override public void onResponse(JSONObject response) { Gson gson = new Gson(); Singersin=gson.fromJson(response.toString(),Singer.class); daytime= sin.getSinger().getDaytime(); order=sin.getSinger().getOrder(); title=sin.getSinger().getTitle(); Log.d("TAG", response.toString()); Log.i(tag, "name:" + name); Log.i(tag, "time:" + daytime); Log.i(tag, "order:" + order); Log.i(tag, "title:" + title); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }); mRequestQueue.add(jsonObjectRequest); } } }).start(); Log.i(tag, "dataString:" + dataString); Log.i(tag, "id:" + id); Log.i(tag, "path:" + path); Log.i(tag, "path1:" + path1); Log.i(tag, "queryString:" + queryString); Log.i(tag, "name" + name + " age" + age); } } } }

服务器的Json数据

{
'singer':{
'daytime':12,'order':'45','title':'订单'}}

 

日志输出结果:

D/TAG: {
"singer":{
"daytime":12,"order":"45","title":"订单"}} name:http://124.200.36.22:8000/test/namelist.json time:12 order:45 title:订单 path:/test1 path:/test2

demo链接点击去下载

转载地址:http://vnizx.baihongyu.com/

你可能感兴趣的文章
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
查找恶意的TOR中继节点
查看>>
MAVEN 属性定义与使用
查看>>
hadoop2.7.2 HA搭建
查看>>
gitosc上传项目
查看>>
基于开源云平台OpenStack的存储分析
查看>>
关于Android Sqlite语句注意事项一点
查看>>
shell高级视频答学生while循环问题
查看>>
无法SSH到Ubuntu
查看>>
使用@media实现IE hack的方法
查看>>
磁盘管理 - 软RAID
查看>>
KVM下virtio驱动虚拟机XML配置文件分析
查看>>
创建一个基本镜像
查看>>
《11招玩转网络安全》之第一招:Docker For Docker
查看>>
7、kvm虚拟机快照备份
查看>>
visual studio 2005没有找到MSVCR80D.dll问题
查看>>
hive_0.11中文用户手册
查看>>
hiveserver2修改线程数
查看>>
我的友情链接
查看>>
XML教程
查看>>