Android与JS进行交互传文件路径
webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获。
新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目。
先看android端
初始化webview
// 设置支持JavaScript等
webView = (WebView) findViewById(R.id.webView);
settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setCacheMode(WebSettings.LOAD_DEFAULT); //缓存
settings.setDomStorageEnabled(true); //使用localStorage则必须打开
settings.setDatabaseEnabled(true);
settings.setAppCacheEnabled(true);
settings.setAllowFileAccess(true);
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
settings.setRenderPriority(WebSettings.RenderPriority.HIGH); //提高渲染优先级
settings.setBlockNetworkImage(false); //把图片放在最后渲染
webView.setWebChromeClient(new WebChromeClient()); webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void onUseCamera() {
//use system camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
} }, "camera");
webView.addJavascriptInterface(new Object() { @JavascriptInterface
public String onGetPic() {
return file.getAbsolutePath();
}
}, "getPicture");
webView.loadUrl("file:///android_asset/login_content.html");
这里执行了点击h5中的按钮,调用系统相机的操作,onActivityResult就不写了,网上一大堆,不过需要注意,onactivityResult中要有
webView.loadUrl("javascript:getPic(" + ")");这样一句代码
。其中名字为camera的javascrptInterface是调用照相机,getPicture的是返回照片路径给js。
下面就是js了
function useCamera(){
window.camera.onUseCamera();
}
function getPic(){
var filePath = window.getPicture.onGetPic();
alert(filePath);
document.getElementById("testImage").src=filePath;
}
主要就是这样的两个方法,其中useCamera是要在html的button的onclick中调用,getPic是在上面的onActivityForResult中调用,通过文件路径更改id是testImage的图片。
这样直接传文件路径在web项目部署在服务器时是访问不到的,这个应该有解决方案,可惜我没有找到。还有个问题待解决,传一个string的文件路径没问题,但是如果直接传File类型的文件时,js死活都识别不出文件来,目测应该用h5的FileReader进行操作,可惜我又没成功。。。以上
Android与JS进行交互传文件路径的更多相关文章
- Atitit.js获取上传文件全路径
Atitit.js获取上传文件全路径 1. 默认的value只能获取文件名..安全原因.. 1 2. Firefox浏览器的读取 1 3. Html5 的file api 2 4. 解决方法::使用a ...
- JS获取上传文件的绝对路径,兼容IE和FF
<input type="file" id="fileBrowser" name="fileBrowser" size="5 ...
- js能否上传文件夹
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- 利用ajaxfileupload.js异步上传文件
1.引入ajaxfileupload.js 2.html代码 <input type="file" id="enclosure" name="e ...
- Android端通过HttpURLConnection上传文件到服务器
Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...
- js获取上传文件内容(未完待续)
js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...
- js获取上传文件内容
js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...
- Android端通过HttpURLConnection上传文件到server
Android端通过HttpURLConnection上传文件到server 一:实现原理 近期在做Androidclient的应用开发,涉及到要把图片上传到后台server中.自己选择了做Sprin ...
- js获取上传文件的绝对路径
在html中 <input type="file" id="importFile" /> <input type="bu ...
随机推荐
- Java学习笔记(15)
iterator方法 迭代器的作用:就是用于抓取集合中的元素 注:迭代器返回的一个接口类型的实现类,是一种多态的用法,而不是接口在调用方法 public class Demo2 { public st ...
- JAVA使用POI如何导出百万级别数据(转载)
用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会常报OOM错误,这时候调整JVM的配置参数也不是一个好对策(注:jdk在32位系统中支持的内存不能超过2个G,而在6 ...
- linux svn 配置
#svnadmin create projectname #vi projectname/conf/svnserve.conf anon-access = noneauth-access =write ...
- SQL Server 2012的内部原理和故障排除(50):Burgess_Liu的专栏
http://blog.csdn.net/Burgess_Liu/article/category/1821435/2 http://www.cnblogs.com/fygh/archive/2012 ...
- 把网页转换成图片或者pdf--wkhtmltopdf
一.下载并安装wkhtmltopdf https://wkhtmltopdf.org/downloads.html 按照需要自己下载安装就可以了: 二.使用步骤--启动和生成图片或pdf 1.下载wk ...
- sso 自动化运维平台
单点登录SSO(Single Sign-On)是身份管理中的一部分.本文中作者开发了一个自动化运维平台中的统一认证接口,单点登录平台通过提供统一的认证平台,实现单点登录.因此,应用系统并不需要开发用户 ...
- C,C++经典问题
C,C++经典问题 1 编程基础 1.1 基本概念 1.1.1 指针的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. ...
- 剖析ASP.NET Core MVC(Part 1)- AddMvcCore(译)
原文:https://www.stevejgordon.co.uk/asp-net-core-mvc-anatomy-addmvccore发布于:2017年3月环境:ASP.NET Core 1.1 ...
- iOS:导航条滚动透明度随着tableView的滚动而变化
来源:HelloYeah 链接:http://www.jianshu.com/p/b8b70afeda81 下面这个界面有没有觉得很眼熟.打开你手里的App仔细观察,你会发现很多都有实现这个功能.比如 ...
- iOS:CALayer核心动画层
CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...