@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions(perms, permsRequestCode);
web = (WebView) findViewById(R.id.webview);
web.getSettings().setJavaScriptEnabled(true);
//Webview 위치정보 확인 설정
web.getSettings().setGeolocationEnabled(true);
//Webview 앱에 등록되어 있는 이미지 리소스를 자동으로 로드하도록 설정
web.getSettings().setLoadsImagesAutomatically(true);
//Webview 캐쉬 사용하도록 설정
web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
web.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
//Webview 확대축소기능 사용 가능하도록 설정
web.getSettings().setSupportZoom(true);
//안드로이드에서 제공하는 줌 아이콘을 사용할 수 있도록 설정
web.getSettings().setBuiltInZoomControls(true);
//웹뷰 확대 축소 아이콘 안보이도록
web.getSettings().setDisplayZoomControls(false);
//Webview 창 여러개 안뜨도록 설정
web.getSettings().setSupportMultipleWindows(false);
//Webview 폼데이터 저장 안하도록 설정
web.getSettings().setSaveFormData(false);
//Webview javascript의 window.open 안되도록 설정
web.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
//Webview 가로 스크롤바 사용 안함
web.setHorizontalScrollBarEnabled(true);
//Webview 세로 스크롤바 사용 안함
web.setVerticalScrollBarEnabled(true);
//Webview 스크롤바 영역 위로 web영역 차지하도록 설정
web.setVerticalScrollbarOverlay(true);
//Webview HTML5 DomStorage 지원 가능가하도록 (vimeo 구동방식이 DomStorage)
web.getSettings().setDomStorageEnabled(true);
//Webview App캐쉬 사용여부
web.getSettings().setAppCacheEnabled(true);
web.setWebViewClient(new WebViewClient());
web.getSettings().setPluginState(WebSettings.PluginState.ON);
web.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setAcceptThirdPartyCookies(web, true);
web.setWebChromeClient(new WebChromeClient()});
web.loadUrl("http://androidtest.imweb.me/");
}
class WebViewClient extends android.webkit.WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.e("eee", "Finished : " + url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.e("eee", "start : " + url);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
Log.e("eee", "ReceivedError : " + error.getErrorCode() + "///" +
error.getDescription().subSequence(0, error.getDescription().length()) + "///" +
request.getMethod() + "///" + request.getUrl().toString());
}
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
Log.e("eee", "ReceivedHttpAuthRequest : " + host + "////" + realm);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e("eee", url);
if (url.startsWith("intent:")) {
try {
Intent intent2 = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
Uri uri = Uri.parse(intent2.getDataString());
try {
Intent intent3 = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent3);
} catch (ActivityNotFoundException e) {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id=" + intent2.getPackage()));
startActivity(marketIntent);
}
return true;
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
}
서버에서랑 웹에서 결제는 다 처리하고
웹뷰에서는 뿌려주기만 합니다.
어차피 웹에서 동작하는거니까 웹뷰에서 뿌려주기만 하는거겠죠 ...
그런데 일반 웹이나 모바일 웹에서는 결제가 문제가없는데
저희 어플 웹뷰에서만 문제가 생깁니다.
결제진행이 되다가 막바지에 처음으로 돌아간다던지..
또는 식별번호가 없습니다 가 뜬다던지 여기저기 검색해서 5.0버전 이상부터는 쿠키 허용도 시켜줫구요
왜 문제가 생기는지 모르겠습니다...
그리고 pg사 결제창 들어가면 웹뷰에서 아에 액션을 못잡던데... 다른분들도 그러신가요??
어떻게 해결하는게 좋을까요 ㅠㅠㅠ 쿠키허용도했는데 결제는 안되고 웹뷰에서는 WebViewClient로 결제창만 들어가면 아무런 액션을 못잡습니다 하 ...
ps webChromeClient 쪽은 코드가 너무 길어져서 일부로 제거했습니다. 그냥 파일목록 불러오는 부분이라서요