MainActivity.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.nice.niceid;
  2. import android.app.Activity;
  3. import android.content.ActivityNotFoundException;
  4. import android.content.Intent;
  5. import android.graphics.Bitmap;
  6. import android.net.Uri;
  7. import android.os.Bundle;
  8. import android.webkit.WebSettings;
  9. import android.webkit.WebView;
  10. import android.webkit.WebViewClient;
  11. import android.widget.Toast;
  12. import java.net.URISyntaxException;
  13. public class MainActivity extends Activity {
  14. private WebView mWebView;
  15. private static final String URL_INFO = ""//휴대폰본인인증 호출하는 URL 입력;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. mWebView = (WebView) findViewById(R.id.webView);
  21. //웹뷰의 설정을 다음과 같이 맞춰주시기 바랍니다.
  22. mWebView.getSettings().setJavaScriptEnabled(true); //필수설정(true)
  23. mWebView.getSettings().setDomStorageEnabled(true); //필수설정(true)
  24. mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); //필수설정(true)
  25. mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
  26. mWebView.getSettings().setLoadsImagesAutomatically(true);
  27. mWebView.getSettings().setBuiltInZoomControls(true);
  28. mWebView.getSettings().setSupportZoom(true);
  29. mWebView.getSettings().setSupportMultipleWindows(true);
  30. mWebView.getSettings().setLoadWithOverviewMode(true);
  31. mWebView.getSettings().setUseWideViewPort(true);
  32. /**
  33. !필수사항!
  34. 웹뷰 내 앱링크를 사용하려면 WebViewClient를 반드시 설정하여 주시기바랍니다. (하단 DemoWebViewClient 참고)
  35. **/
  36. mWebView.setWebViewClient(new DemoWebViewClient());
  37. mWebView.loadUrl(URL_INFO);
  38. }
  39. public class DemoWebViewClient extends WebViewClient {
  40. @Override
  41. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  42. //웹뷰 내 표준창에서 외부앱(통신사 인증앱)을 호출하려면 intent:// URI를 별도로 처리해줘야 합니다.
  43. //다음 소스를 적용 해주세요.
  44. if (url.startsWith("intent://")) {
  45. Intent intent = null;
  46. try {
  47. intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
  48. if (intent != null) {
  49. //앱실행
  50. startActivity(intent);
  51. }
  52. } catch (URISyntaxException e) {
  53. //URI 문법 오류 시 처리 구간
  54. } catch (ActivityNotFoundException e) {
  55. String packageName = intent.getPackage();
  56. if (!packageName.equals("")) {
  57. // 앱이 설치되어 있지 않을 경우 구글마켓 이동
  58. startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
  59. }
  60. }
  61. //return 값을 반드시 true로 해야 합니다.
  62. return true;
  63. } else if (url.startsWith("https://play.google.com/store/apps/details?id=") || url.startsWith("market://details?id=")) {
  64. //표준창 내 앱설치하기 버튼 클릭 시 PlayStore 앱으로 연결하기 위한 로직
  65. Uri uri = Uri.parse(url);
  66. String packageName = uri.getQueryParameter("id");
  67. if (packageName != null && !packageName.equals("")) {
  68. // 구글마켓 이동
  69. startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
  70. }
  71. //return 값을 반드시 true로 해야 합니다.
  72. return true;
  73. }
  74. //return 값을 반드시 false로 해야 합니다.
  75. return false;
  76. }
  77. @Override
  78. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  79. super.onPageStarted(view, url, favicon);
  80. }
  81. @Override
  82. public void onPageFinished(WebView view, String url) {
  83. super.onPageFinished(view, url);
  84. }
  85. }
  86. }