要设置Android WebView只允许上传图片文件,你可以使用以下代码示例:
首先,在你的AndroidManifest.xml文件中添加以下权限:
然后,在你的Activity中,添加以下代码:
import android.webkit.WebChromeClient;
import android.webkit.ValueCallback;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
public class MainActivity extends Activity {
private WebView webView;
private ValueCallback filePathCallback;
private final static int FILE_CHOOSER_RESULT_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 在WebView中加载URL,而不是使用浏览器加载
view.loadUrl(url);
return true;
}
});
webView.setWebChromeClient(new WebChromeClient() {
// For Android 5.0+
public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
if (filePathCallback != null) {
MainActivity.this.filePathCallback = filePathCallback;
Intent intent = fileChooserParams.createIntent();
try {
startActivityForResult(intent, FILE_CHOOSER_RESULT_CODE);
} catch (Exception e) {
MainActivity.this.filePathCallback = null;
return false;
}
}
return true;
}
});
webView.loadUrl("Your_Web_URL");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FILE_CHOOSER_RESULT_CODE) {
if (filePathCallback == null) return;
Uri[] results = null;
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
String dataString = data.getDataString();
if (dataString != null) {
results = new Uri[]{Uri.parse(dataString)};
}
}
}
filePathCallback.onReceiveValue(results);
filePathCallback = null;
}
}
}
在上述代码中,我们设置了WebView的WebChromeClient,其中的onShowFileChooser方法用于拦截文件选择器事件。当用户点击上传文件时,会调用此方法。
然后,我们在onShowFileChooser方法中启动文件选择器,并在onActivityResult方法中获取用户选择的文件URI,并使用filePathCallback将其传递给WebView。
请注意,你需要将"Your_Web_URL"替换为你要加载的实际网址。
这样,你的Android WebView就只能上传图片文件了。