웹뷰 어플을 만들고 있는 왕왕왕초보입니다.
앱을 실행 하면 제가 만든 Custom Webview를 통해 특정 url로 자동 이동하게끔 만들어놨어요.
그 웹사이트에서 이것저것 하다 보면 주소를 입력하는 부분이 있습니다.
아래에 정상적인 시나리오를 쉽게 써볼게요~
1. 앱을 키면 자동으로 특정 웹사이트로 이동한다.
2. 주소 입력하는 화면으로 이동한다.
3. 주소 입력 버튼을 누르면 새 창이 뜬다. (지도창)
4. 지도 내에서 특정 위치를 누르면 새 창은 닫히고, 이전 창의 텍스트 영역에 선택했던 위치의 주소값이 자동으로 입력된다.
그런데 제가 개발한 소스에서는 애초에 3번부터가 제가 개발한 앱에서 실행되는게 아니고, 제가 평소에 즐겨 쓰는 Boat브라우저가 실행이 되네요.
로그로 찍어본 "aaaaaa"는 실행되지만, 창이 닫히는 부분인 "ccccccc"는 Boat브라우저를 back하거나 종료시켜도 실행이 안되네요. "bbbbbb"도 실행 안되구요 ㅠㅠ
제가 만든 앱 말고 크롬이나, 다른 브라우저로 실행하면 저 시나리오대로 잘되요 ㅜㅜ
소스코드 어떤 부분을 수정해야되는지 알려주세요 고수님들 ㅜㅜ
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.webView = (WebView) findViewById(R.id.webview);
setWebViewSetting();
webView.loadUrl(URL_VERSION_1);
}
public void setWebViewSetting() {
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture,
android.os.Message resultMsg) {
Toast.makeText(getApplicationContext(), "aaaaaaaaaaaaaaaaaaaaaa", Toast.LENGTH_LONG).show();
WebView newWebView = new WebView(MainActivity.this);
newWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onCloseWindow(WebView window) {
Toast.makeText(getApplicationContext(), "ccccccccccccccc", Toast.LENGTH_LONG).show();
window.setVisibility(View.GONE);
webView.removeView(window);
}
});
webView.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
};
@Override
public void onCloseWindow(WebView window){
super.onCloseWindow(window);
webView.removeView(window);
}
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) {
Toast.makeText(getApplicationContext(), "bbbbbbbbbbbbbb", Toast.LENGTH_LONG).show();
new AlertDialog.Builder(MainActivity.this).setTitle("AlertDialog").setMessage(message)
.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
}).setCancelable(false).create().show();
return true;
};
});
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
///
webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);
webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
webSettings.setSupportMultipleWindows(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setBlockNetworkImage(false);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setUseWideViewPort(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
}