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 ...
随机推荐
- JavaScript继承方式
我的上一篇随笔中写了有关原型继承的,下面介绍几种更加有用的. 借用构造函数 在解决原型中关于引用类型值所带来的问题,开发人员开始使用一种叫做借用构造函数. 基本思想: 在子类型构造函数的内部调用超类型 ...
- [转]基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目
摘要 对于现在主流的j2ee企业级开发而言,ssh(struts+hibernate+spring)依然是一个事实的标准.由struts充当的mvc调度控制:hibernate的orm持久化映射:sp ...
- MATLAB/Octave中implicit conversion from real matrix to real scalar错误原因与解决
写程序时提示 implicit conversion from real matrix to real scalar的一个warning,主要问题在于将一个矩阵当成一个标量在使用.我的程序出现这个wa ...
- 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,
业务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器. qps: 200个左右 tps: 1个左右 一分钟50几个 sort_buffer_size = 32M 大了 ...
- window安装svn
window安装svn 1 安装时,安装路径选择好,把打X的都选上,默认第一个 安装完毕后,安装语言包,完毕,电脑上右键打开svn,,svn设置,常规设置,选中文 官网就有的下的 2 创建版本库,检出 ...
- jQuery:validate内置验证的使用
(1)required:true 必输字段(2)remote:"check.php" 使用ajax方法调用check.php验证输入值(3)email:true 必须输入正确格式的 ...
- [转]在SSIS中,使用“包配置”时的常见错误与解析
本文转自:http://www.cnblogs.com/invinboy/archive/2008/05/26/1034312.html 在以前的DTS中,在包的开发.测试.发布迁移过程中你必须手动的 ...
- 两张表的笛卡尔积用sql语句
第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小SELECT * FROM table1 CROSS JOIN table2
- DevExpress.Build.v14.2
DevExpress.Build.v14.2 using Microsoft.Build.AppxPackage; using Microsoft.Build.Framework; using Sys ...
- 向大家推荐两个灰常好用的插件LigerUI和报表控件highcharts
废话不多说上一张图看看,向大家推荐两个灰常好用的插件LigerUI和报表控件highcharts.欢迎大家进技术群讨论:QQ群:15129679 http://ligerui.com/和http:// ...