Android通过浏览器打开app页面并且传递值
最近公司有个需求,要求从第三方网页端打开一个网页,然后在网页中点击“下载”,“打开”按钮,在app端进行下载和打开操作。这里记录下方法。
首先,网页和app页面进行交互,其实会很快想到JS交互,但是现在需要在第三方浏览器中,那就没法拿到Webview,也就没法js互交,所以这里android也提供有方法。
看一个静态页面(html):
<BODY>
<a href="hjz://com.zjmk.hjz_progressmotirx/openwith?gameid=12007&pk_name=com.surfing.android.tastyfood">启动应用程序</a>
</p></br></p>
<a href="hjz://com.zjmk.hjz_progressmotirx/down?apkurl=http://down.hjz518.com/upload/APK/2015-5/19/150519172102.apk&apkname=黄金指&memo=这是一款牛逼的手赚软件&gameid=12007&pk_name=com.surfing.android.tastyfood">启动应用程序下载页面</a>
</BODY>
我们看看href里面的组成:
- hjz://:这里的hjz://是“scheme”。
- com.zjmk.hjz_progressmotirx:这个是“host”。
- /down:这个是方法名前缀“pathPrefix”。
- apkurl=….&pkname=…:这个是传递的参数。
看到以上代码可能还是不是很明白这些有什么用,那么接着往下看….
看android端:
其实在android里面的项目清单住处的Activity下面可以添加很多数据节点,如 ,,,….
<activity android:name=".OpenapkActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:
name="android.intent.action.VIEW"/>
<category android:
name="android.intent.category.DEFAULT" />
<category
name="android.intent.category.BROWSABLE" />
<data
android:scheme="hjz" android:host="com.zjmk.hjz_progressmotirx" android:pathPrefix="/openwith"/>
</intent-filter>
</activity>
看这个activity注册,在其下面添加了几个数据节点,action,category,data。看来data里面的数据应该就很明白了,data节点里面的数据都是和我们网页相对应的,如
scheme=”hjz”,//协议
host=”com.zjmk.hjz_progressmotirx”;//主机
pathPrefix=”/openwith”;//方法前缀
只有先对应才能正确的启动页面。
在activity中获取数据:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.openapklayput);
Intent intent=getIntent();
String action = intent.getAction();
if(Intent.ACTION_VIEW.equals(action)){
Uri uri =intent.getData();
if(uri != null){
//根据属性值获取数据
String gameid=
uri.getQueryParameter("gameid");
String pkname=
uri.getQueryParameter("pk_name");
PackageManager packageManager =
getPackageManager();
Intent intent2=new Intent();
intent2 =packageManager
.getLaunchIntentForPackage(pkname);
startActivity(intent2);
Intent intent1=
new Intent(this,MotirxServices.class);
}
}
}
……到这里可以完成第三方浏览器和自己app应用的交互在跳过WebVIew的情况下,但是这里可能会有一个悲催的事情,就是他的兼容性。在369获取猎豹浏览器中href=“”;这里在scheme前面自动加上http://…..
这里就导致不能正常的打开我们指定的app页面。系统内置浏览器肯定是可以的,只是第三方浏览器可能存在这个问题,不过我的手机测试基本都可以,没问题。
Android通过浏览器打开app页面并且传递值的更多相关文章
- 通过手机浏览器打开APP或者跳转到下载页面.md
目录 通过手机浏览器打开APP或者跳转到下载页面 添加 schemes 网页设置 参考链接 通过手机浏览器打开APP或者跳转到下载页面 以下仅展示最简单的例子及关键代码 由于硬件条件有限,仅测试了 A ...
- Android 获取浏览器当前分享页面的截屏
Android 获取浏览器当前分享页面的截屏 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/BrowserScreenShotActivity 文中 ...
- ASP.NET页面之间传递值的几种方式
目录 QueryString Session Cookie Application 一.QueryString QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中. ...
- [转]ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- ASP.NET页面之间传递值的几种方式(转载)
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- [转载]ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- ASP中页面之间传递值的几种方式
ASP.NET页面之间传递值的几种方式 页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryS ...
- spring boot 之如何在两个页面之间传递值(转)
原文地址:spring boot 之如何在两个页面之间传递值 问题:页面之间的跳转,通常带有值的传输,但是,在现在比较流行的SPRING MVC WEB 开发模型中,设计机制导致页面之间的直接接跳转和 ...
- ASP.NET 页面之间传递值的几种方式
1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer4.Applicatio ...
随机推荐
- 接上篇—用spring注入DBbean,并使用maven管理
接着上篇的登陆功能,用spring的依赖注入和maven的管理,又实现了一遍.新增了注册功能. 有两个目标:使用spring和使用maven 目录结构 首先是目标1:使用spring的依赖注入,注入b ...
- 使用app-inspector查看元素,无法连接到手机,提示错误{ Error: Command failed ……forward tcp:9001 tcp:9001错误解决
在学习使用app-inspector查看元素时,碰到一个问题.在cmd窗口执行命令app-inspector --port 5678 -u 85EABNFSU53R --verbose ,连接不到手 ...
- excel时间戳转化为标准日期(日期转化为日期戳)
最近在学习python将数据导入到excel,发现日期变成数字而不是日期格式的问题. 第一眼看去肯定是excel单元格格式问题,一般excel单元格格式为常规,而常规处理日期时就显示为数字,所以就想到 ...
- 【测试的艺术】+测试分析&测试计划+模板
一.项目概述 1.1.项目背景 #就是说一下为什么要做这个项目 1.2.项目目标 #这个项目最终要达到的目标是什么 二.项目整体分析 #项目分为哪些部分?各部分之间的关联是什么?各部分的目标是什么? ...
- 使用jquery处理数据时要注意的问题
现在的网站越来越重视用户体验,网站必须即时反应,前端技术越来越重要了,以前我们都用javascript,后来出现了很多js的框架,调用起来也很方便,但是随着网页上加载的数据越来越多,使用jquery的 ...
- HDFS HA和Federaion
1.HA HA即为High Availability,用于解决NameNode单点故障问题,该特性通过热备的方式为主NameNode提供一个备用者,一旦主NameNode出现故障,可以迅速切换至备Na ...
- 关于require js加载的时候报错的问题
1.在项目中使用了requery.js 页面总是会出项一些奇怪的错误,如下 后来经过查找资料才发现,原来是因为依赖 的问题,因为require加载的时候是异步加载,而js之间是有相互依赖的,所以解决 ...
- 【Css】一个简单的选项卡
这次来做一个简单的选项卡. 选项卡其实就分3个部分:html代码,用于显示的内容:css代码,用于显示的样式:javascript代码,用于点击事件. 老规矩,先写一个html坯子. <!DOC ...
- 关于发布webservice提示The test form is only available for requests from the local machine
通过编辑 Web 服务所在的 vroot 的 Web.config 文件,可以启用 HTTP GET 和 HTTP POST.以下配置同时启用了 HTTP GET 和 HTTP POST: <c ...
- 在create-react-app创建的React项目应用中配置JQ、Sass
使用 create-react-app 配置 react 开发环境,像下面这样,就可以构建一个新的 react 单页面应用,非常方便. npm install -g create-react-app ...