H5 调 android 相机和相册
来源:互联网 发布:门诊电子病历软件 编辑:程序博客网 时间:2024/06/05 18:46
public class IndexActivity extends AppCompatActivity {
private ValueCallback<Uri> uploadMessage;private ValueCallback<Uri[]> uploadMessageAboveL;private final static int FILE_CHOOSER_RESULT_CODE = 10000;private final static int REQUEST_CODE_CAMERA = 10001;private WebView mWebview;private WebSettings mSettings;private LinearLayout mSelectView;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_index); mWebview = (WebView) findViewById(R.id.web_view); mSelectView = (LinearLayout) findViewById(R.id.select_view); initWebView();}private void initWebView() { // 网页加载 mSettings = mWebview.getSettings(); mSettings.setDefaultTextEncodingName("utf-8"); mSettings.setJavaScriptEnabled(true); mWebview.setWebViewClient(client); // 弹出对话框 mWebview.setWebChromeClient(chromeClient); mWebview.loadUrl("http://webapp.sktap.cn/hjytest/taikang/input/");}private WebChromeClient chromeClient = new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); } // For Android 3.0+ public void openFileChooser(ValueCallback<Uri> uploadMsg) { uploadMessage = uploadMsg; openImageChooserActivity(); } // For Android 3.0+ public void openFileChooser(ValueCallback uploadMsg, String acceptType) { uploadMessage = uploadMsg; openImageChooserActivity(); } //For Android 4.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { uploadMessage = uploadMsg; openImageChooserActivity(); } // For Android >= 5.0 @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> valueCallback, FileChooserParams fileChooserParams) { uploadMessageAboveL = valueCallback; openImageChooserActivity(); return true; }};private void openImageChooserActivity() { mSelectView.setVisibility(View.VISIBLE);}private String path;public void chooserForCamera(View v) { mSelectView.setVisibility(View.INVISIBLE); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //path为保存图片的路径,执行完拍照以后能保存到指定的路径下 path = getExternalFilesDir(Environment.DIRECTORY_MOVIES) + "/" + System.currentTimeMillis() + ".jpg"; File file = new File(path); Uri imageUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, REQUEST_CODE_CAMERA);}public void chooserForAlbum(View v) { mSelectView.setVisibility(View.INVISIBLE); Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == FILE_CHOOSER_RESULT_CODE) { if (null == uploadMessage && null == uploadMessageAboveL) return; Uri result = data == null || resultCode != RESULT_OK ? null : data.getData(); if (uploadMessageAboveL != null) { onActivityResultAboveL(requestCode, resultCode, data); } else if (uploadMessage != null) { uploadMessage.onReceiveValue(result); uploadMessage = null; } } else if (requestCode == REQUEST_CODE_CAMERA) { if (null == uploadMessage && null == uploadMessageAboveL) return; if (uploadMessageAboveL != null) { onActivityResultAboveL(requestCode, resultCode, data); } else if (uploadMessage != null) { File file = new File(path); Uri imageUri = Uri.fromFile(file); uploadMessage.onReceiveValue(imageUri); uploadMessage = null; } }}@TargetApi(Build.VERSION_CODES.LOLLIPOP)private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) { if (requestCode == FILE_CHOOSER_RESULT_CODE && uploadMessageAboveL != null) { Uri[] results = null; if (resultCode == Activity.RESULT_OK) { if (intent != null) { String dataString = intent.getDataString(); ClipData clipData = intent.getClipData(); if (clipData != null) { results = new Uri[clipData.getItemCount()]; for (int i = 0; i < clipData.getItemCount(); i++) { ClipData.Item item = clipData.getItemAt(i); results[i] = item.getUri(); } } if (dataString != null) results = new Uri[]{Uri.parse(dataString)}; } } uploadMessageAboveL.onReceiveValue(results); uploadMessageAboveL = null; } else if (requestCode == REQUEST_CODE_CAMERA && uploadMessageAboveL != null) { File file = new File(path); Uri imageUri = Uri.fromFile(file); Uri[] results = new Uri[]{imageUri}; uploadMessageAboveL.onReceiveValue(results); uploadMessageAboveL = null; }}private WebViewClient client = new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); }};
}
阅读全文
0 0
- H5 调 android 相机和相册
- android之 h5调用系统相机和相册并显示
- 简单实现H5调起手机相机和相册
- Android与H5相机、相册笔记
- android相机和相册
- android调用相机和相册
- android调用相机和相册
- android 打开相机和相册
- Android调用相机和相册
- Android中相机和相册使用分析
- Android 跳转到系统相机和相册
- 关于android webview调用相册和相机
- android读取相册照片和相机照片
- android 调用相机和获取相册图片
- android 调用系统相机和相册
- Android调用系统相机和相册
- Android调用系统相机和相册-填坑篇
- Android调用系统相机和相册
- Kattis
- 七天使的通讯
- 2 ,JS之 if 条件语句
- 集合的遍历
- HDOJ3790 单源最短路 + 双权值
- H5 调 android 相机和相册
- spring源码解析-IOC原理
- hdu2489(prim+dfs)
- android 过度绘制
- 模拟卖票系统
- 用BulkLoad加载数据
- 求这样一个三位数,该三位数等于其每位数字的阶乘之和
- Android Studio中的六种依赖
- HTML:Modern Html