Android webview uiapp页面文件上传
时间: 2023-07-31 07:08:28 浏览: 206
要在Android WebView中实现UIApp页面文件上传,您可以使用以下步骤:
1. 在您的WebViewClient中,覆盖onShowFileChooser()方法。
2. 在onShowFileChooser()方法中,创建一个Intent对象,并设置其类型为"image/*"或任何您需要的文件类型。
3. 调用startActivityForResult()方法来启动Intent并获取用户选择的文件。
4. 在onActivityResult()方法中,从Intent中获取用户选择的文件并将其上传到服务器。
以下是一个示例代码:
```
private ValueCallback<Uri[]> mFilePathCallback;
private String mCameraPhotoPath;
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
if (mFilePathCallback != null) {
mFilePathCallback.onReceiveValue(null);
}
mFilePathCallback = filePathCallback;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath);
} catch (IOException ex) {
Log.e(TAG, "Unable to create Image File", ex);
}
if (photoFile != null) {
mCameraPhotoPath = "file:" + photoFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
} else {
takePictureIntent = null;
}
}
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType("*/*");
Intent[] intentArray;
if (takePictureIntent != null) {
intentArray = new Intent[]{takePictureIntent};
} else {
intentArray = new Intent[0];
}
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "File Chooser");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, 1);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode != 1 || mFilePathCallback == null) {
super.onActivityResult(requestCode, resultCode, data);
return;
}
Uri[] results = null;
if (resultCode == RESULT_OK) {
if (data != null) {
String dataString = data.getDataString();
if (dataString != null) {
results = new Uri[]{Uri.parse(dataString)};
}
} else {
results = new Uri[]{Uri.parse(mCameraPhotoPath)};
}
}
mFilePathCallback.onReceiveValue(results);
mFilePathCallback = null;
}
```
在上面的代码中,onShowFileChooser()方法创建了一个Intent对象,其中包括打开相机和选择文件的选项。如果用户选择了一个文件,它会调用startActivityForResult()方法,并在onActivityResult()方法中获取用户选择的文件并将其上传到服务器。
阅读全文