728x90
반응형
private class SslWebViewConnect extends WebViewClient { //SSL인증서 무시 & 이니시스결제 클래스
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // SSL 에러가 발생해도 계속 진행!
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("location://")){
mWebView.loadUrl("https://uaram.iptime.org:8443/location.user?lat="+Latitude+"&lng="+Longitude);
}
if(!url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("javascript:")){
Intent intent;
try{
intent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
}
catch (URISyntaxException ex){
return false;
}
try{
startActivity(intent);
}
catch (ActivityNotFoundException e){
if(url.startsWith("ispmobile://")){
showDialog(1005);
return false;
}
else if(url.startsWith("intent")){
try{
Intent tempIntent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
String strParams = tempIntent.getDataString();
Intent intent2 = new Intent(Intent.ACTION_VIEW);
intent2.setData(Uri.parse(strParams));
startActivity(intent2);
return true;
}
catch (Exception e1) {
e1.printStackTrace();
Intent intent3 = null;
try{
intent3 = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id="+intent3.getPackage()));
startActivity(marketIntent);
}
catch (Exception e2){
e2.printStackTrace();
}
return true;
}
}
}
}
else{
view.loadUrl(url);
return false;
}
return true;
}
}
클래스를 하나 정의하여 WebViewClient상속받아줍니다.
그안에 위 코드내용을 적어주면 됩니다.
맨 위 onReceivedSslError메소드는 저번 포스팅때 되었던 SSL인증서 에러를 무시하고 페이지를 띄워주는 기능입니다.
해당 코드를 작성할때 주의할점은 MainAcitivity안에 적어줘야합니다.
onCreate괄호 밖에서 클래스를 만들어서 작성을 해야 실현가능합니다.
그 후 onCreate안에
alertIsp = new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("알림")
.setMessage("모바일 ISP 어플리케이션이 설치되어 있지 않습니다. \n 설치를 눌러 진행 해 주십시요. \n 취소를 누르면 결제가 취소 됩니다.")
.setPositiveButton("설치",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
mWebView.loadUrl("http://mobile.vpay.co.kr/jsp/MISP/andowb.jsp");
finish();
}
})
.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "(-1)결제를 취소 하셨습니다.",Toast.LENGTH_SHORT).show();
finish();
}
}).create();
이걸 정의해줍니다.
alertIsp는 클래스딴 전역으로
AlertDialog alertIsp;
따로 분리해서 선언합니다.
mWebSettings.setMixedContentMode(mWebSettings.MIXED_CONTENT_NEVER_ALLOW); //Insecurity 페이지 허용 이니시스 관련셋팅
cookieManager.setAcceptCookie(true); //third party cookies 사용의 차단으로 안심클릭 카드 결제시 보안키보드를 못불러오는 경우를 대비해서 설정해줍니다.
cookieManager.setAcceptThirdPartyCookies(mWebView,true); // 이거까지 같이 ^^
WebView를 셋팅해줄때
같이 셋팅해줍니다.
CookieManager cookieManager = CookieManager.getInstance();
를 따로 클래스딴에 선언해주셔야하구요.
후에 실행해보면 잘 되실겁니다.
궁금하신 사항은 댓글 남겨주세요.
728x90
반응형
'Android' 카테고리의 다른 글
안드로이드 AlertDialog 띄우기. (0) | 2019.11.14 |
---|---|
안드로이드 스마트폰의 인터넷 연결상태 유무. (0) | 2019.11.12 |
안드로이드 스튜디오 WebView 경고창 및 확인창 띄우기 (0) | 2019.10.24 |
안드로이드 스튜디오 FCM 기기 고유의 토큰값 받아오기. (0) | 2019.10.24 |
안드로이드 스튜디오 구글맵을 통한 위도랑 경도만 받아오기 (0) | 2019.10.24 |
댓글