在 Android WebView 中禁用电子邮件和数字检测可以通过以下步骤实现:
- 在 WebView 中添加一个 WebSettings 对象,并禁用其内置的电子邮件和数字检测功能。WebSettings webSettings = webView.getSettings();
webSettings.setLoadsImagesAutomatically(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 10; GM1900 Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.61 Mobile Safari/537.36");
webSettings.setAllowContentAccess(true);
webSettings.setAllowFileAccess(true);webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
disableEmailAddressDetection();
disablePhoneNumberDetection();
}
});void disableEmailAddressDetection() {
String emailAddressRegex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$";
Pattern pattern = Pattern.compile(emailAddressRegex);
Matcher matcher = pattern.matcher("");
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(100)});
editText.setHorizontallyScrolling(false);
editText.setLines(1);
editText.setSingleLine(true);
editText.setFocusable(false);
editText.setClickable(false);
editText.setFocusableInTouchMode(false);
editText.setLongClickable(false);
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
return false;
}
return true;
}
});
}
void disablePhoneNumberDetection() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
editText.setHorizontallyScrolling(false);
editText.setLines(1);
editText.setSingleLine(true);
editText.setFocusable(false);
editText.setClickable(false);
editText.setFocusableInTouchMode(false);
editText.setLongClickable(false);
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
return false;
}
return true;
}
});
}<EditText
android:id="@+id/editText"
android:layout_width="match
- 在 WebView 的 onPageFinished 方法中,调用 disableEmailAddressDetection 和 disablePhoneNumberDetection 方法来禁用电子邮件和数字检测功能。
- 在 disableEmailAddressDetection 和 disablePhoneNumberDetection 方法中,调用 setInputType() 方法来禁用输入类型。
- 在布局文件中,添加一个 EditText 来显示禁用后的电话号码和电子邮件地址。