как реализовать загрузку изображения в android веб-просмотре с java
В моем веб-представлении я хочу выбрать изображение из gellary / камеры, когда пользователь нажимает на ввод файла
Я реализовал средство выбора файлов и его работоспособность
Но я хочу средство выбора изображений с камерой и опцией кадрирования (я использую эту библиотеку для других проектов, могу ли я реализовать эту библиотеку ?)
Min sdk это 19
мой код
webview.setWebChromeClient(new WebChromeClient() {
// For 3.0+ Devices (Start)
// onActivityResult attached before constructor
protected void openFileChooser(ValueCallback uploadMsg, String acceptType) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
}
// For Lollipop 5.0+ Devices
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
if (uploadMessage != null) {
uploadMessage.onReceiveValue(null);
uploadMessage = null;
}
uploadMessage = filePathCallback;
Intent intent = fileChooserParams.createIntent();
try {
startActivityForResult(intent, REQUEST_SELECT_FILE);
} catch (ActivityNotFoundException e) {
uploadMessage = null;
Toast.makeText(context, "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
return false;
}
return true;
}
//For Android 4.1 only
protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "File Chooser"), FILECHOOSER_RESULTCODE);
}
protected 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"), FILECHOOSER_RESULTCODE);
}
});
OnActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
//Image Uri will not be null for RESULT_OK
final String fileUri = data.getExtras().getString("extra.file_path", "empty");
new Thread(new Runnable() {
@Override
public void run() {
try {
h.upload_file(_url + "profile.php", userid_token, new File(fileUri), new cb() {
@Override
public void run(String p1) {
runOnUiThread(new Runnable() {
@Override
public void run() {
webview.reload();
Log.d("eeeeee","reloading on picture chagne");
}
});
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
} else if (resultCode == ImagePicker.RESULT_ERROR) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
}
}