package com.houjianbo.demo.testwebview;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ClipData;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.text.format.DateFormat;
import android.util.Log;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Locale;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
private WebView mWebView;
private String TMP_URL = "file:///android_asset/TestCamera.html";
private ValueCallback<Uri> mUploadMessage;// 表单的数据信息
private ValueCallback<Uri[]> mUploadCallbackAboveL;
private final static int FILECHOOSER_RESULTCODE = 1;// 表单的结果回调</span>
private Uri imageUri;
File file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.loadUrl(TMP_URL);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
WebSettings settings = mWebView.getSettings();
settings.setDomStorageEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setAllowContentAccess(true); // 是否可访问Content Provider的资源,默认值 true
settings.setAllowFileAccess(true); // 是否可访问本地文件,默认值 true
// 是否允许通过file url加载的Javascript读取本地文件,默认值 false
settings.setAllowFileAccessFromFileURLs(false);
// 是否允许通过file url加载的Javascript读取全部资源(包括文件,http,https),默认值 false
settings.setAllowUniversalAccessFromFileURLs(false);
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(true);
//检查权限
checkAppPermission();
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
});
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onShowFileChooser(WebView webView,
ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams) {
mUploadCallbackAboveL = filePathCallback;
take();
return true;
}
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
take();
}
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
mUploadMessage = uploadMsg;
take();
}
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
mUploadMessage = uploadMsg;
take();
}
});
//android 7.0系统解决拍照的问题
// StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
// StrictMode.setVmPolicy(builder.build());
// builder.detectFileUriExposure();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILECHOOSER_RESULTCODE) {
updatePhotos();
if (null == mUploadMessage && null == mUploadCallbackAboveL) return;
Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
if (mUploadCallbackAboveL != null) {
onActivityResultAboveL(requestCode, resultCode, data);
} else if (mUploadMessage != null) {
Log.e("result", result + "");
if (result == null) {
// mUploadMessage.onReceiveValue(imageUri);
mUploadMessage.onReceiveValue(imageUri);
mUploadMessage = null;
Log.e("imageUri", imageUri + "");
} else {
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
}
}
@SuppressWarnings("null")
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void onActivityResultAboveL(int requestCode, int resultCode, Intent data) {
if (requestCode != FILECHOOSER_RESULTCODE
|| mUploadCallbackAboveL == null) {
return;
}
Uri[] results = null;
if (resultCode == Activity.RESULT_OK) {
if (data == null) {
results = new Uri[]{imageUri};
} else {
String dataString = data.getDataString();
ClipData clipData = data.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)};
}
}
if (results != null) {
mUploadCallbackAboveL.onReceiveValue(results);
mUploadCallbackAboveL = null;
} else {
results = new Uri[]{imageUri};
mUploadCallbackAboveL.onReceiveValue(results);
mUploadCallbackAboveL = null;
}
return;
}
private void take() {
// int hasCameraContactsPermission = ActivityCompat.checkSelfPermission(this,Manifest.permission.CAMERA);
// if (hasCameraContactsPermission != PackageManager.PERMISSION_GRANTED) {
// String[] PERMISSIONS_STORAGE = {
// Manifest.permission.CAMERA};
//
// ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE,
// 1);
// }
//
// int hasWriteContactsPermission = ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE);
// if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
// String[] PERMISSIONS_STORAGE = {
// Man
没有合适的资源?快使用搜索试试~ 我知道了~
webview 调用手机相机和图库demo(亲测好用)
共95个文件
xml:40个
bin:15个
png:10个
需积分: 10 9 下载量 169 浏览量
2022-12-23
10:58:45
上传
评论
收藏 1.49MB ZIP 举报
温馨提示
webview 调用手机相机和图库demo(亲测好用) webview.setWebChromeClient(new WebChromeClient() public boolean onShowFileChooser (WebView webView, ValueCallback<Uri[]> uploadMsg, FileChooserParams fileChooserParams)
资源推荐
资源详情
资源评论
收起资源包目录
TestWebView.zip (95个子文件)
TestWebView
.gradle
3.3
tasks
_app_compileDebugJavaWithJavac
localJarClasspathSnapshot
localJarClasspathSnapshot.lock 17B
localJarClasspathSnapshot.bin 20KB
localClassSetAnalysis
localClassSetAnalysis.bin 33KB
localClassSetAnalysis.lock 17B
taskArtifacts
fileSnapshots.bin 1.02MB
taskArtifacts.lock 17B
taskArtifacts.bin 70KB
fileHashes.bin 133KB
buildOutputCleanup
cache.properties 51B
cache.properties.lock 2B
built.bin 0B
4.1
javaCompile
taskHistory.bin 112KB
classAnalysis.bin 2.01MB
jarAnalysis.bin 828KB
taskJars.bin 26KB
javaCompile.lock 17B
fileChanges
last-build.bin 1B
taskHistory
fileSnapshots.bin 2.33MB
taskHistory.bin 84KB
taskHistory.lock 17B
fileContent
fileContent.lock 17B
fileHashes
fileHashes.lock 17B
resourceHashesCache.bin 21KB
fileHashes.bin 279KB
gradle.properties 867B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 236B
app
src
androidTest
java
com
houjianbo
demo
testwebview
ExampleInstrumentedTest.java 790B
test
java
com
houjianbo
demo
testwebview
ExampleUnitTest.java 424B
main
assets
TestCamera.html 3KB
css.css 122B
images
small.cur 2KB
big.cur 2KB
java
com
houjianbo
demo
testwebview
MainActivity.java 12KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher_round.png 4KB
ic_launcher.png 3KB
mipmap-mdpi
ic_launcher_round.png 2KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 14KB
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher_round.png 6KB
ic_launcher.png 5KB
values
colors.xml 214B
strings.xml 77B
styles.xml 394B
layout
activity_main.xml 550B
drawable
AndroidManifest.xml 1KB
proguard-rules.pro 960B
libs
build.gradle 1006B
app.iml 12KB
build
.gitignore 8B
gradlew.bat 2KB
build.gradle 521B
.idea
runConfigurations.xml 564B
libraries
com_android_support_support_vector_drawable_25_3_1.xml 715B
com_android_support_test_runner_0_5.xml 794B
com_android_support_test_rules_0_5.xml 787B
com_android_support_appcompat_v7_25_3_1.xml 660B
org_hamcrest_hamcrest_integration_1_3_jar.xml 578B
com_android_support_test_espresso_espresso_idling_resource_2_2_2.xml 961B
com_google_code_findbugs_jsr305_2_0_1_jar.xml 359B
com_android_support_support_core_utils_25_3_1.xml 690B
com_android_support_support_core_ui_25_3_1.xml 675B
com_android_support_test_exposed_instrumentation_api_publish_0_5.xml 997B
javax_inject_javax_inject_1_jar.xml 528B
com_android_support_support_fragment_25_3_1.xml 680B
com_android_support_animated_vector_drawable_25_3_1.xml 720B
javax_annotation_javax_annotation_api_1_2_jar.xml 379B
com_android_support_support_annotations_25_3_1_jar.xml 761B
com_android_support_support_media_compat_25_3_1.xml 700B
com_android_support_constraint_constraint_layout_1_0_2.xml 501B
com_android_support_support_compat_25_3_1.xml 670B
com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml 395B
com_android_support_test_espresso_espresso_core_2_2_2.xml 884B
org_hamcrest_hamcrest_core_1_3_jar.xml 543B
org_hamcrest_hamcrest_library_1_3_jar.xml 557B
com_squareup_javawriter_2_1_1_jar.xml 538B
junit_junit_4_12_jar.xml 487B
com_android_support_support_v4_25_3_1.xml 472B
workspace.xml 183KB
misc.xml 2KB
inspectionProfiles
Project_Default.xml 5KB
profiles_settings.xml 241B
compiler.xml 686B
modules.xml 359B
gradle.xml 626B
copyright
profiles_settings.xml 76B
kotlinc.xml 216B
settings.gradle 16B
local.properties 492B
build
gradlew 5KB
TestWebView.iml 888B
.gitignore 127B
共 95 条
- 1
资源评论
绝凌峰
- 粉丝: 28
- 资源: 47
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功