webview打开图库并获取安卓文件图片
来源:互联网 发布:建立网络英文怎么写 编辑:程序博客网 时间:2024/06/04 19:11
1,实现安卓webview 打开安卓图库并拿到文件,最后调用js实现文件上传(未实现)。
2,
demo81.htm
网页代码如下:一个简单的文件选择按钮。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><body> <input id="fileImage" type="file" size="300" name="fileselect" accept="image/*" /></body></html>
3,安卓实现代码
package cai.com.myapplication;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Build;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.webkit.ValueCallback;import android.webkit.WebChromeClient;import android.webkit.WebView;public class WebViewDemo extends FragmentActivity { private static final int FILE_SELECT_CODE = 0; private WebView webView; private ValueCallback<Uri> mUploadMessage;//回调图片选择,4.4以下 private ValueCallback<Uri[]> mUploadCallbackAboveL;//回调图片选择,5.0以上 @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.content_main); initWebView(); } @SuppressLint("SetJavaScriptEnabled") private void initWebView() { webView = (WebView) findViewById(R.id.webview); WebView webView = (WebView) findViewById(R.id.webview); //允许JavaScript执行 webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadsImagesAutomatically(true); webView.setVerticalScrollBarEnabled(false); //运行webview通过URI获取安卓文件 webView.getSettings().setAllowFileAccess(true); webView.getSettings().setAllowFileAccessFromFileURLs(true); webView.getSettings().setAllowUniversalAccessFromFileURLs(true); webView.setWebChromeClient(new MyWebChromeClient());//设置可以打开图片管理器 webView.loadUrl("file:///android_asset/demo81.htm"); } private class MyWebChromeClient extends WebChromeClient { // For Android 3.0+ public void openFileChooser(ValueCallback<Uri> uploadMsg) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "File Chooser"), FILE_SELECT_CODE); } // For Android 3.0+ public void openFileChooser(ValueCallback uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult(Intent.createChooser(i, "File Browser"), FILE_SELECT_CODE); } // For Android 4.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "File Chooser"), FILE_SELECT_CODE); } // For Android 5.0+ public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { mUploadCallbackAboveL = filePathCallback; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult( Intent.createChooser(i, "File Browser"), FILE_SELECT_CODE); return true; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK) { return; } switch (requestCode) { case FILE_SELECT_CODE: { if (Build.VERSION.SDK_INT >= 21) {//5.0以上版本处理 Uri uri = data.getData(); Uri[] uris = new Uri[]{uri}; /* ClipData clipData = data.getClipData(); //选择多张 if (clipData != null) { for (int i = 0; i < clipData.getItemCount(); i++) { ClipData.Item item = clipData.getItemAt(i); Uri uri = item.getUri(); uris[i]=uri; } }*/ mUploadCallbackAboveL.onReceiveValue(uris);//回调给js } else {//4.4以下处理 Uri uri = data.getData(); mUploadMessage.onReceiveValue(uri); } } break; } }}
运行后
选择图片后。
最后就是使用Js实现文件上传到服务器。
1 0
- webview打开图库并获取安卓文件图片
- Android 打开相机和图库获取图片并裁剪
- 安卓调用系统的图库选择图片并获取Uri路径
- 关于安卓保存网络图片并更新图库
- Qt 打开安卓相册选择图片并获取图片的本地路径
- android获取图库图片并返回
- 【Android】调用系统图库获取图像并裁剪,安卓 4.4可用
- 4.4从图库选择图片,获取图片路径并裁剪
- 4.4从图库选择图片,获取图片路径并裁剪
- MFC点击按钮打开文件选择对话框并获取图片
- Android如何从图库获取一张图片并显示
- 通过拍照或者图库获取图片并上传服务器
- 如何调用andorid本地图库并获取其图片路径
- Android从图库选择照片并获取图片的path
- Android调用系统图库和相机获取图片并裁剪
- 从图库获取图片
- Webview打开本地图片文件选择解决方案
- 安卓bitmap图片保存到系统图库
- VS2013发布网站,IIS网站发布
- SGD中的Momentum
- inline之__attribute__((always_inline))
- Protocol Buffer与iOS的交互
- Delphi 静态局部变量的替换方法
- webview打开图库并获取安卓文件图片
- Android开发入门书籍强烈推荐
- Activity的四种启动模式-图文并茂
- tyvj 1463 智商问题
- 传统企业互联网转型,引爆跨界IT管理的工具与经验
- android webview js交互 调取本地相册(兼容各个版本)并且上传到服务器端。
- 对utf-8字符串计算长度
- CORS 头缺少 'Access-Control-Allow-Origin'问题
- 算法小题目练习