android webview 는 js 의 alert, confirm, prompt 를 가 져 오고 값 을 가 져 옵 니 다.
개발 중 에 prompt 를 통 해 값 을 전달 해 야 하 는 상황 을 만 났 습 니 다.즉, prompt 팝 업 상자 의 값 을 캡 처 하여 원생 에 표시 하지만 prompt 상 자 는 팝 업 되 지 않 습 니 다.
코드:
STEP 1: 원생 호출 js 코드
private WebView webView;
webView.loadUrl("javascript:getParams()");
제2 부: 웹 페이지 js 탄창
function getParams() {
window.prompt(" ");
}
제3 부: 원생 차단 탄 틀, 탄 틀 금지 및 대응 하 는 값 획득
private void init webView() {
webView = new WebView(context);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);// js
webView.setWebChromeClient(new WebChromeClient() {// alert
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
webTitle = title;
}
/**
* alert
*/
@Override
public boolean onJsAlert(WebView view,String url,
String message,JsResult result) {
Log.d(LOG_TAG,"onJsAlert:"+message);
// mReusultText.setText("Alert:"+message);
/* // alert
new AlertDialog.Builder(PhoneTest.this).
setTitle("Alert").setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//TODO
}
}).create().show();
*/
result.confirm();
return super.onJsConfirm(view,url,message, result);
}
/**
* confirm
*/
@Override
public boolean onJsConfirm(WebView view, String url, String message,
JsResult result) {
Log.d(LOG_TAG, "onJsConfirm:"+message);
mReusultText.setText("Confirm:"+message); // ,
// confirm
new AlertDialog.Builder(PhoneTest.this).
setTitle("Confirm").setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//TODO
}
}).create().show();
result.confirm();
return true;
// ,
//return super.onJsConfirm(view, url, message, result);
}
/**
* prompt
*/
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result) {
Log.d(LOG_TAG,"onJsPrompt:"+message);
mReusultText.setText("Prompt input is :"+message);
result.confirm();
return super.onJsPrompt(view, url, message, message, result);
}
});
}
설명:
result. confirm () 은 return true 와 함께 사용 해 야 탄 상자 가 나타 나 지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
고유 식별자인 타임스탬프, GUID 가져오기프로젝트에서 우리는 항상 유일한 표지를 얻어야 한다. 데이터베이스의 자증 필드를 제외하고 우리는 시간 스탬프와 GUID를 얻는 방식을 사용할 수 있다. 현재 요약 코드는 다음과 같다. 좋은 것을 써서 사용하면 된다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.