react-native-webview-bootpay 11.18.1 → 11.18.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/android/.DS_Store +0 -0
  2. package/android/.gradle/6.8/executionHistory/executionHistory.bin +0 -0
  3. package/android/.gradle/6.8/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
  5. package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock +0 -0
  7. package/android/.gradle/7.0-rc-1/dependencies-accessors/gc.properties +0 -0
  8. package/android/.gradle/7.0-rc-1/executionHistory/executionHistory.lock +0 -0
  9. package/android/.gradle/7.0-rc-1/fileChanges/last-build.bin +0 -0
  10. package/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/7.0-rc-1/gc.properties +0 -0
  12. package/android/.gradle/7.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  13. package/android/.gradle/7.1.1/executionHistory/executionHistory.lock +0 -0
  14. package/android/.gradle/7.1.1/fileHashes/fileHashes.lock +0 -0
  15. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  16. package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
  17. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  18. package/android/.gradle/checksums/checksums.lock +0 -0
  19. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  20. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  21. package/android/.idea/jarRepositories.xml +8 -3
  22. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +13 -0
  23. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -4
  24. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -3
  25. package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -3
  26. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -4
  27. package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +16 -0
  28. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -3
  29. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -3
  30. package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -3
  31. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -4
  32. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -4
  33. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -3
  34. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -3
  35. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -3
  36. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -3
  37. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -3
  38. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -3
  39. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -3
  40. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -3
  41. package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -3
  42. package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -4
  43. package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -3
  44. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -4
  45. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -3
  46. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -3
  47. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +13 -0
  48. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -3
  49. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +13 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
  51. package/android/.idea/libraries/{Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml → Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml} +7 -7
  52. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
  53. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
  56. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
  57. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
  58. package/android/.idea/libraries/{Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml → Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml} +4 -4
  59. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_62_2_aar.xml +18 -0
  60. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_8_0_aar.xml +15 -0
  61. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_8_0.xml +13 -0
  62. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_8_0_aar.xml +15 -0
  63. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +13 -0
  64. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +13 -0
  65. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +13 -0
  66. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
  67. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_50.xml +13 -0
  68. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_50.xml +13 -0
  69. package/android/.idea/modules/android.iml +33 -42
  70. package/android/.project +34 -0
  71. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  72. package/android/build/.transforms/{cef19407ab645b1b4c01cb89efaec997 → 4e87ba7f47baac309fba5367e008cf44}/results.bin +0 -0
  73. package/android/build/.transforms/4e87ba7f47baac309fba5367e008cf44/transformed/classes/classes.dex +0 -0
  74. package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789/classes/classes.dex +0 -0
  75. package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789.bin +1 -0
  76. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +79 -0
  77. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  78. package/android/build/intermediates/compiled_local_resources/debug/out/xml_file_provider_paths.xml.flat +0 -0
  79. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
  80. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
  81. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
  82. package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +2 -2
  83. package/android/build/intermediates/incremental/packageDebugResources/merger.xml +1 -1
  84. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient$1.class +0 -0
  85. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient.class +0 -0
  86. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$1.class +0 -0
  87. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.class +0 -0
  88. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.class +0 -0
  89. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView.class +0 -0
  90. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewClient.class +0 -0
  91. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$1.class +0 -0
  92. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$2.class +0 -0
  93. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$3.class +0 -0
  94. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$4.class +0 -0
  95. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager.class +0 -0
  96. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule.class +0 -0
  97. package/android/build/intermediates/library_java_res/debug/res.jar +0 -0
  98. package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +102 -0
  99. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +192 -24
  100. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +79 -0
  101. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/build-history.bin +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab_i +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/last-build.bin +0 -0
  125. package/android/build/outputs/logs/manifest-merger-debug-report.txt +205 -27
  126. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  127. package/android/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt +29 -0
  128. package/android/build/tmp/kotlin-classes/debug/META-INF/{react-native-webview_debug.kotlin_module → react-native-webview-bootpay_debug.kotlin_module} +0 -0
  129. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/BPCWebViewPackage.class +0 -0
  130. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.class +0 -0
  131. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.class +0 -0
  132. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.class +0 -0
  133. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.class +0 -0
  134. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.class +0 -0
  135. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.class +0 -0
  136. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.class +0 -0
  137. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.class +0 -0
  138. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.class +0 -0
  139. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.class +0 -0
  140. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.class +0 -0
  141. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent.class +0 -0
  142. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.class +0 -0
  143. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.class +0 -0
  144. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.class +0 -0
  145. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.class +0 -0
  146. package/android/build.gradle +5 -5
  147. package/android/gradle.properties +6 -6
  148. package/android/local.properties +1 -1
  149. package/android/src/.DS_Store +0 -0
  150. package/android/src/main/.DS_Store +0 -0
  151. package/android/src/main/AndroidManifest.xml +75 -0
  152. package/android/src/main/java/.DS_Store +0 -0
  153. package/android/src/main/java/kr/.DS_Store +0 -0
  154. package/android/src/main/java/kr/co/.DS_Store +0 -0
  155. package/android/src/main/java/kr/co/bootpay/.DS_Store +0 -0
  156. package/android/src/main/java/kr/co/bootpay/webview/BPCWebChromeClient.java +120 -2
  157. package/android/src/main/java/kr/co/bootpay/webview/BPCWebView.java +11 -26
  158. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewClient.java +119 -134
  159. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManager.java +49 -95
  160. package/apple/BPCWebView.m +64 -86
  161. package/ios/.DS_Store +0 -0
  162. package/ios/RNCWebView.xcodeproj/project.pbxproj +18 -18
  163. package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcuserdata/bootpay.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  164. package/ios/RNCWebView.xcodeproj/xcuserdata/bootpay.xcuserdatad/xcschemes/xcschememanagement.plist +0 -8
  165. package/lib/WebViewNativeComponent.windows.js +2 -2
  166. package/package.json +6 -7
  167. package/react-native.config.js +1 -1
  168. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -13
  169. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +0 -16
  170. package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +0 -16
  171. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -13
  172. package/android/.idea/libraries/Gradle__androidx_webkit_webkit_1_4_0_aar.xml +0 -16
  173. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +0 -13
  174. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +0 -15
  175. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +0 -18
  176. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +0 -18
  177. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +0 -18
  178. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +0 -15
  179. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +0 -15
  180. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +0 -15
  181. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +0 -15
  182. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +0 -15
  183. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +0 -15
  184. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +0 -15
  185. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +0 -15
  186. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_4_aar.xml +0 -14
  187. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +0 -13
  188. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +0 -13
  189. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +0 -15
  190. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +0 -13
  191. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +0 -13
  192. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +0 -13
  193. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +0 -13
  194. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +0 -13
  195. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +0 -13
  196. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +0 -13
  197. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +0 -13
  198. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +0 -13
  199. package/android/build/.transforms/cef19407ab645b1b4c01cb89efaec997/transformed/classes/classes.dex +0 -0
  200. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BasicAuthCredential.class +0 -0
  201. package/android/src/main/java/kr/co/bootpay/webview/BasicAuthCredential.java +0 -12
  202. package/ios/RNCWebView.xcodeproj/xcshareddata/xcschemes/RNCWebView.xcscheme +0 -68
@@ -3,6 +3,11 @@ package kr.co.bootpay.webview;
3
3
  import android.Manifest;
4
4
  import android.annotation.TargetApi;
5
5
  import android.app.Activity;
6
+ import android.app.Dialog;
7
+ import android.content.ActivityNotFoundException;
8
+ import android.content.Context;
9
+ import android.content.DialogInterface;
10
+ import android.content.Intent;
6
11
  import android.content.pm.PackageManager;
7
12
  import android.net.Uri;
8
13
  import android.os.Build;
@@ -10,13 +15,18 @@ import android.os.Message;
10
15
  import android.view.Gravity;
11
16
  import android.view.View;
12
17
  import android.view.ViewGroup;
18
+ import android.view.WindowManager;
13
19
  import android.webkit.ConsoleMessage;
14
20
  import android.webkit.GeolocationPermissions;
15
21
  import android.webkit.PermissionRequest;
16
22
  import android.webkit.ValueCallback;
17
23
  import android.webkit.WebChromeClient;
24
+ import android.webkit.WebResourceRequest;
18
25
  import android.webkit.WebView;
26
+ import android.webkit.WebViewClient;
19
27
  import android.widget.FrameLayout;
28
+ import android.widget.LinearLayout;
29
+ import android.widget.Toast;
20
30
 
21
31
  import androidx.annotation.RequiresApi;
22
32
  import androidx.core.content.ContextCompat;
@@ -28,7 +38,9 @@ import com.facebook.react.bridge.WritableMap;
28
38
  import com.facebook.react.common.build.ReactBuildConfig;
29
39
  import com.facebook.react.modules.core.PermissionAwareActivity;
30
40
  import com.facebook.react.modules.core.PermissionListener;
41
+ import com.facebook.react.uimanager.ThemedReactContext;
31
42
 
43
+ import java.net.URISyntaxException;
32
44
  import java.util.ArrayList;
33
45
  import java.util.Collections;
34
46
  import java.util.List;
@@ -84,10 +96,114 @@ class BPCWebChromeClient extends WebChromeClient implements LifecycleEventListen
84
96
  this.mWebView = webView;
85
97
  }
86
98
 
99
+ // Dialog popupDialog;
100
+ @Override
101
+ public void onCloseWindow(WebView window) {
102
+ super.onCloseWindow(window);
103
+ ((BPCWebView) window).dissmissDialog();
104
+ window.setVisibility(View.GONE);
105
+ }
106
+
107
+ void setWebSettingCopy(WebView view, WebView newWebView) {
108
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
109
+ newWebView.getSettings().setMediaPlaybackRequiresUserGesture( view.getSettings().getMediaPlaybackRequiresUserGesture() );
110
+ }
111
+
112
+ newWebView.getSettings().setBuiltInZoomControls(view.getSettings().getBuiltInZoomControls());
113
+ newWebView.getSettings().setDisplayZoomControls(view.getSettings().getDisplayZoomControls());
114
+ newWebView.getSettings().setAllowFileAccess(view.getSettings().getAllowFileAccess());
115
+ newWebView.getSettings().setAllowContentAccess(view.getSettings().getAllowContentAccess());
116
+ newWebView.getSettings().setLoadWithOverviewMode(view.getSettings().getLoadWithOverviewMode());
117
+ // newWebView.getSettings().setEnableSmoothTransition(view.getSettings().);
118
+ newWebView.getSettings().setSaveFormData(view.getSettings().getSaveFormData());
119
+ newWebView.getSettings().setSavePassword(view.getSettings().getSavePassword());
120
+ newWebView.getSettings().setTextZoom(view.getSettings().getTextZoom());
121
+
122
+ newWebView.getSettings().setUseWideViewPort(view.getSettings().getUseWideViewPort());
123
+ newWebView.getSettings().setSupportMultipleWindows(true);
124
+ newWebView.getSettings().setLayoutAlgorithm(view.getSettings().getLayoutAlgorithm());
125
+ newWebView.getSettings().setStandardFontFamily(view.getSettings().getStandardFontFamily());
126
+ newWebView.getSettings().setFixedFontFamily(view.getSettings().getFixedFontFamily());
127
+ newWebView.getSettings().setSansSerifFontFamily(view.getSettings().getSansSerifFontFamily());
128
+ newWebView.getSettings().setSerifFontFamily(view.getSettings().getSerifFontFamily());
129
+ newWebView.getSettings().setCursiveFontFamily(view.getSettings().getCursiveFontFamily());
130
+ newWebView.getSettings().setFantasyFontFamily(view.getSettings().getFantasyFontFamily());
131
+ newWebView.getSettings().setMinimumFontSize(view.getSettings().getMinimumFontSize());
132
+ newWebView.getSettings().setMinimumLogicalFontSize(view.getSettings().getMinimumLogicalFontSize());
133
+ newWebView.getSettings().setDefaultFontSize(view.getSettings().getDefaultFontSize());
134
+ newWebView.getSettings().setDefaultFixedFontSize(view.getSettings().getDefaultFixedFontSize());
135
+ newWebView.getSettings().setLoadsImagesAutomatically(view.getSettings().getLoadsImagesAutomatically());
136
+ newWebView.getSettings().setBlockNetworkImage(view.getSettings().getBlockNetworkImage());
137
+ newWebView.getSettings().setJavaScriptEnabled(view.getSettings().getJavaScriptEnabled());
138
+ newWebView.getSettings().setDatabaseEnabled(view.getSettings().getDatabaseEnabled());
139
+ newWebView.getSettings().setDomStorageEnabled(view.getSettings().getDomStorageEnabled());
140
+
141
+ newWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(view.getSettings().getJavaScriptCanOpenWindowsAutomatically());
142
+ newWebView.getSettings().setDefaultTextEncodingName(view.getSettings().getDefaultTextEncodingName());
143
+ newWebView.getSettings().setUserAgentString(view.getSettings().getUserAgentString());
144
+ newWebView.getSettings().setCacheMode(view.getSettings().getCacheMode());
145
+
146
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
147
+ newWebView.getSettings().setMixedContentMode(view.getSettings().getMixedContentMode());
148
+ }
149
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
150
+ newWebView.getSettings().setSafeBrowsingEnabled(view.getSettings().getSafeBrowsingEnabled());
151
+ }
152
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
153
+ newWebView.getSettings().setForceDark(view.getSettings().getForceDark());
154
+ }
155
+
156
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
157
+ newWebView.getSettings().setDisabledActionModeMenuItems(view.getSettings().getDisabledActionModeMenuItems());
158
+ }
159
+ }
160
+
87
161
  @Override
88
162
  public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
89
163
 
90
- final WebView newWebView = new WebView(view.getContext());
164
+ final BPCWebView newWebView = new BPCWebView((ThemedReactContext) view.getContext());
165
+ BPCWebChromeClient client = new BPCWebChromeClient(this.mReactContext, view);
166
+ // client.onCloseWindow();
167
+ client.setProgressChangedFilter(progressChangedFilter);
168
+
169
+ newWebView.setWebChromeClient(client);
170
+
171
+ setWebSettingCopy(view, newWebView);
172
+
173
+ newWebView.setWebViewClient(new BPCWebViewClient() {
174
+
175
+ @Override
176
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
177
+ Intent intent = getIntentWithPackage(url);
178
+ Context context = view.getContext();
179
+
180
+ if(isIntent(url)) {
181
+ if(isInstallApp(intent, context)) return startApp(intent, context);
182
+ else return startGooglePlay(intent, context);
183
+ } else if(isMarket(url)) {
184
+ if(isInstallApp(intent, context)) return startApp(intent, context);
185
+ else return startGooglePlay(intent, context);
186
+ } else if(isSpecialCase(url)) {
187
+ if(isInstallApp(intent, context)) return startApp(intent, context);
188
+ else return startGooglePlay(intent, context);
189
+ }
190
+ return url.contains("vguardend");
191
+ }
192
+ });
193
+
194
+ Dialog popupDialog = new Dialog(view.getContext(), android.R.style.Theme_Black_NoTitleBar_Fullscreen);
195
+ popupDialog.setContentView(newWebView);
196
+ ViewGroup.LayoutParams params = popupDialog.getWindow().getAttributes();
197
+ params.width = ViewGroup.LayoutParams.MATCH_PARENT;
198
+ params.height = ViewGroup.LayoutParams.MATCH_PARENT;
199
+ popupDialog.getWindow().setAttributes((WindowManager.LayoutParams) params);
200
+ popupDialog.setOnDismissListener(dialog -> {
201
+ // Toast.makeText(view.getContext(), "팝업취소", Toast.LENGTH_SHORT).show();
202
+ onCloseWindow(view); //rn에선 딱히 동작하지 않음
203
+ });
204
+ newWebView.setDialog(popupDialog);
205
+ popupDialog.show();
206
+
91
207
  final WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
92
208
  transport.setWebView(newWebView);
93
209
  resultMsg.sendToTarget();
@@ -118,6 +234,8 @@ class BPCWebChromeClient extends WebChromeClient implements LifecycleEventListen
118
234
  event.putBoolean("canGoBack", webView.canGoBack());
119
235
  event.putBoolean("canGoForward", webView.canGoForward());
120
236
  event.putDouble("progress", (float) newProgress / 100);
237
+
238
+
121
239
  ((BPCWebView) webView).dispatchEvent(
122
240
  webView,
123
241
  new TopLoadingProgressEvent(
@@ -332,4 +450,4 @@ class BPCWebChromeClient extends WebChromeClient implements LifecycleEventListen
332
450
  public void setProgressChangedFilter(BPCWebView.ProgressChangedFilter filter) {
333
451
  progressChangedFilter = filter;
334
452
  }
335
- }
453
+ }
@@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
4
4
  import android.app.Dialog;
5
5
  import android.os.Build;
6
6
  import android.text.TextUtils;
7
- import android.view.MotionEvent;
8
7
  import android.webkit.JavascriptInterface;
9
8
  import android.webkit.WebChromeClient;
10
9
  import android.webkit.WebView;
@@ -33,10 +32,13 @@ import java.net.URLEncoder;
33
32
 
34
33
  import kr.co.bootpay.webview.events.TopMessageEvent;
35
34
 
35
+
36
+
36
37
  /**
37
38
  * Subclass of {@link WebView} that implements {@link LifecycleEventListener} interface in order
38
39
  * to call {@link WebView#destroy} on activity destroy event and also to clear the client
39
40
  */
41
+
40
42
  class BPCWebView extends WebView implements LifecycleEventListener {
41
43
  Dialog dialog; //popup dialog
42
44
  public void setDialog(Dialog dialog) {
@@ -64,13 +66,12 @@ class BPCWebView extends WebView implements LifecycleEventListener {
64
66
  protected @Nullable
65
67
  String messagingModuleName;
66
68
  protected @Nullable
67
- BPCWebViewClient mbpCWebViewClient;
69
+ BPCWebViewClient mbpCWebViewlient;
68
70
  protected @Nullable
69
71
  CatalystInstance mCatalystInstance;
70
72
  protected boolean sendContentSizeChangeEvents = false;
71
73
  private OnScrollDispatchHelper mOnScrollDispatchHelper;
72
74
  protected boolean hasScrollEvent = false;
73
- protected boolean nestedScrollEnabled = false;
74
75
  protected ProgressChangedFilter progressChangedFilter;
75
76
 
76
77
  protected static final String JAVASCRIPT_INTERFACE = "BootpayRNWebView";
@@ -88,11 +89,7 @@ class BPCWebView extends WebView implements LifecycleEventListener {
88
89
  }
89
90
 
90
91
  public void setIgnoreErrFailedForThisURL(String url) {
91
- mbpCWebViewClient.setIgnoreErrFailedForThisURL(url);
92
- }
93
-
94
- public void setBasicAuthCredential(BasicAuthCredential credential) {
95
- mbpCWebViewClient.setBasicAuthCredential(credential);
92
+ mbpCWebViewlient.setIgnoreErrFailedForThisURL(url);
96
93
  }
97
94
 
98
95
  public void setSendContentSizeChangeEvents(boolean sendContentSizeChangeEvents) {
@@ -103,10 +100,6 @@ class BPCWebView extends WebView implements LifecycleEventListener {
103
100
  this.hasScrollEvent = hasScrollEvent;
104
101
  }
105
102
 
106
- public void setNestedScrollEnabled(boolean nestedScrollEnabled) {
107
- this.nestedScrollEnabled = nestedScrollEnabled;
108
- }
109
-
110
103
  @Override
111
104
  public void onHostResume() {
112
105
  // do nothing
@@ -122,14 +115,6 @@ class BPCWebView extends WebView implements LifecycleEventListener {
122
115
  cleanupCallbacksAndDestroy();
123
116
  }
124
117
 
125
- @Override
126
- public boolean onTouchEvent(MotionEvent event) {
127
- if (this.nestedScrollEnabled) {
128
- requestDisallowInterceptTouchEvent(true);
129
- }
130
- return super.onTouchEvent(event);
131
- }
132
-
133
118
  @Override
134
119
  protected void onSizeChanged(int w, int h, int ow, int oh) {
135
120
  super.onSizeChanged(w, h, ow, oh);
@@ -150,8 +135,8 @@ class BPCWebView extends WebView implements LifecycleEventListener {
150
135
  public void setWebViewClient(WebViewClient client) {
151
136
  super.setWebViewClient(client);
152
137
  if (client instanceof BPCWebViewClient) {
153
- mbpCWebViewClient = (BPCWebViewClient) client;
154
- mbpCWebViewClient.setProgressChangedFilter(progressChangedFilter);
138
+ mbpCWebViewlient = (BPCWebViewClient) client;
139
+ mbpCWebViewlient.setProgressChangedFilter(progressChangedFilter);
155
140
  }
156
141
  }
157
142
 
@@ -167,7 +152,7 @@ class BPCWebView extends WebView implements LifecycleEventListener {
167
152
 
168
153
  public @Nullable
169
154
  BPCWebViewClient getBPCWebViewClient() {
170
- return mbpCWebViewClient;
155
+ return mbpCWebViewlient;
171
156
  }
172
157
 
173
158
  public void setInjectedJavaScript(@Nullable String js) {
@@ -251,15 +236,15 @@ class BPCWebView extends WebView implements LifecycleEventListener {
251
236
  ReactContext reactContext = (ReactContext) this.getContext();
252
237
  BPCWebView mContext = this;
253
238
 
254
- if (mbpCWebViewClient != null) {
239
+ if (mbpCWebViewlient != null) {
255
240
  WebView webView = this;
256
241
  webView.post(new Runnable() {
257
242
  @Override
258
243
  public void run() {
259
- if (mbpCWebViewClient == null) {
244
+ if (mbpCWebViewlient == null) {
260
245
  return;
261
246
  }
262
- WritableMap data = mbpCWebViewClient.createWebViewEvent(webView, webView.getUrl());
247
+ WritableMap data = mbpCWebViewlient.createWebViewEvent(webView, webView.getUrl());
263
248
  data.putString("data", message);
264
249
 
265
250
  if (mCatalystInstance != null) {
@@ -10,7 +10,6 @@ import android.net.http.SslError;
10
10
  import android.os.Build;
11
11
  import android.os.SystemClock;
12
12
  import android.util.Log;
13
- import android.webkit.HttpAuthHandler;
14
13
  import android.webkit.RenderProcessGoneDetail;
15
14
  import android.webkit.SslErrorHandler;
16
15
  import android.webkit.WebResourceRequest;
@@ -31,18 +30,15 @@ import com.facebook.react.bridge.WritableMap;
31
30
  import java.net.URISyntaxException;
32
31
  import java.util.concurrent.atomic.AtomicReference;
33
32
 
34
-
35
33
  import kr.co.bootpay.webview.events.TopHttpErrorEvent;
36
34
  import kr.co.bootpay.webview.events.TopLoadingErrorEvent;
37
35
  import kr.co.bootpay.webview.events.TopLoadingFinishEvent;
38
36
  import kr.co.bootpay.webview.events.TopLoadingStartEvent;
39
37
  import kr.co.bootpay.webview.events.TopRenderProcessGoneEvent;
40
38
  import kr.co.bootpay.webview.events.TopShouldStartLoadWithRequestEvent;
41
- import kr.co.bootpay.webview.BPCWebViewModule.ShouldOverrideUrlLoadingLock.ShouldOverrideCallbackState;
42
-
43
39
 
44
- class BPCWebViewClient extends WebViewClient {
45
- private static final String TAG = "BPCWebViewManager";
40
+ public class BPCWebViewClient extends WebViewClient {
41
+ private static final String TAG = "BPCWebViewClient";
46
42
  protected static final int SHOULD_OVERRIDE_URL_LOADING_TIMEOUT = 250;
47
43
 
48
44
  protected boolean mLastLoadFailed = false;
@@ -50,16 +46,11 @@ class BPCWebViewClient extends WebViewClient {
50
46
  ReadableArray mUrlPrefixesForDefaultIntent;
51
47
  protected BPCWebView.ProgressChangedFilter progressChangedFilter = null;
52
48
  protected @Nullable String ignoreErrFailedForThisURL = null;
53
- protected @Nullable BasicAuthCredential basicAuthCredential = null;
54
49
 
55
50
  public void setIgnoreErrFailedForThisURL(@Nullable String url) {
56
51
  ignoreErrFailedForThisURL = url;
57
52
  }
58
53
 
59
- public void setBasicAuthCredential(@Nullable BasicAuthCredential credential) {
60
- basicAuthCredential = credential;
61
- }
62
-
63
54
  @Override
64
55
  public void onPageFinished(WebView webView, String url) {
65
56
  super.onPageFinished(webView, url);
@@ -103,17 +94,20 @@ class BPCWebViewClient extends WebViewClient {
103
94
  if(isInstallApp(intent, context)) return startApp(intent, context);
104
95
  else return startGooglePlay(intent, context);
105
96
  }
97
+ // return url.contains("vguardend");
106
98
  return shouldOverrideUrlLoadingRN(view, url);
107
99
  }
108
100
 
109
- public boolean shouldOverrideUrlLoadingRN(WebView view, String url) {
101
+
102
+ private boolean shouldOverrideUrlLoadingRN(WebView view, String url) {
103
+
110
104
  final BPCWebView bpcWebView = (BPCWebView) view;
111
105
  final boolean isJsDebugging = ((ReactContext) view.getContext()).getJavaScriptContextHolder().get() == 0;
112
106
 
113
107
  if (!isJsDebugging && bpcWebView.mCatalystInstance != null) {
114
- final Pair<Integer, AtomicReference<ShouldOverrideCallbackState>> lock = BPCWebViewModule.shouldOverrideUrlLoadingLock.getNewLock();
108
+ final Pair<Integer, AtomicReference<BPCWebViewModule.ShouldOverrideUrlLoadingLock.ShouldOverrideCallbackState>> lock = BPCWebViewModule.shouldOverrideUrlLoadingLock.getNewLock();
115
109
  final int lockIdentifier = lock.first;
116
- final AtomicReference<ShouldOverrideCallbackState> lockObject = lock.second;
110
+ final AtomicReference<BPCWebViewModule.ShouldOverrideUrlLoadingLock.ShouldOverrideCallbackState> lockObject = lock.second;
117
111
 
118
112
  final WritableMap event = createWebViewEvent(view, url);
119
113
  event.putInt("lockIdentifier", lockIdentifier);
@@ -123,7 +117,7 @@ class BPCWebViewClient extends WebViewClient {
123
117
  assert lockObject != null;
124
118
  synchronized (lockObject) {
125
119
  final long startTime = SystemClock.elapsedRealtime();
126
- while (lockObject.get() == ShouldOverrideCallbackState.UNDECIDED) {
120
+ while (lockObject.get() == BPCWebViewModule.ShouldOverrideUrlLoadingLock.ShouldOverrideCallbackState.UNDECIDED) {
127
121
  if (SystemClock.elapsedRealtime() - startTime > SHOULD_OVERRIDE_URL_LOADING_TIMEOUT) {
128
122
  FLog.w(TAG, "Did not receive response to shouldOverrideUrlLoading in time, defaulting to allow loading.");
129
123
  BPCWebViewModule.shouldOverrideUrlLoadingLock.removeLock(lockIdentifier);
@@ -138,7 +132,7 @@ class BPCWebViewClient extends WebViewClient {
138
132
  return false;
139
133
  }
140
134
 
141
- final boolean shouldOverride = lockObject.get() == ShouldOverrideCallbackState.SHOULD_OVERRIDE;
135
+ final boolean shouldOverride = lockObject.get() == BPCWebViewModule.ShouldOverrideUrlLoadingLock.ShouldOverrideCallbackState.SHOULD_OVERRIDE;
142
136
  BPCWebViewModule.shouldOverrideUrlLoadingLock.removeLock(lockIdentifier);
143
137
 
144
138
  return shouldOverride;
@@ -154,6 +148,112 @@ class BPCWebViewClient extends WebViewClient {
154
148
  }
155
149
  }
156
150
 
151
+
152
+ protected Boolean isSpecialCase(String url) {
153
+ return url.matches("^shinhan\\S+$")
154
+ || url.startsWith("kftc-bankpay://")
155
+ || url.startsWith("v3mobileplusweb://")
156
+ || url.startsWith("hdcardappcardansimclick://")
157
+ || url.startsWith("nidlogin://")
158
+ || url.startsWith("mpocket.online.ansimclick://")
159
+ || url.startsWith("wooripay://")
160
+ || url.startsWith("kakaotalk://");
161
+ }
162
+
163
+ protected Boolean isIntent(String url) {
164
+ return url.startsWith("intent:");
165
+ }
166
+ protected Boolean isMarket(String url) {
167
+ return url.startsWith("market://");
168
+ }
169
+
170
+
171
+ protected Intent getIntentWithPackage(String url) {
172
+ try {
173
+ Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
174
+ if(intent.getPackage() == null) {
175
+ if (url == null) return intent;
176
+ if (url.startsWith("shinhan-sr-ansimclick")) intent.setPackage("com.shcard.smartpay");
177
+ else if (url.startsWith("kftc-bankpay")) intent.setPackage("com.kftc.bankpay.android");
178
+ else if (url.startsWith("ispmobile")) intent.setPackage("kvp.jjy.MispAndroid320");
179
+ else if (url.startsWith("hdcardappcardansimclick")) intent.setPackage("com.hyundaicard.appcard");
180
+ else if (url.startsWith("kb-acp")) intent.setPackage("com.kbcard.kbkookmincard");
181
+ else if (url.startsWith("mpocket.online.ansimclick")) intent.setPackage("kr.co.samsungcard.mpocket");
182
+ else if (url.startsWith("lotteappcard")) intent.setPackage("com.lcacApp");
183
+ else if (url.startsWith("cloudpay")) intent.setPackage("com.hanaskcard.paycla");
184
+ else if (url.startsWith("nhappvardansimclick")) intent.setPackage("nh.smart.nhallonepay");
185
+ else if (url.startsWith("citispay")) intent.setPackage("kr.co.citibank.citimobile");
186
+ else if (url.startsWith("kakaotalk")) intent.setPackage("com.kakao.talk");
187
+ }
188
+ return intent;
189
+ } catch (URISyntaxException e) {
190
+ e.printStackTrace();
191
+ return null;
192
+ }
193
+ }
194
+
195
+ protected boolean isInstallApp(Intent intent, Context context) {
196
+ return isExistPackageInfo(intent, context) || isExistLaunchedIntent(intent, context);
197
+ }
198
+
199
+
200
+ protected boolean isExistPackageInfo(Intent intent, Context context) {
201
+ try {
202
+ return intent != null && context.getPackageManager().getPackageInfo(intent.getPackage(), PackageManager.GET_ACTIVITIES) != null;
203
+ } catch (PackageManager.NameNotFoundException e) {
204
+ e.printStackTrace();
205
+ return false;
206
+ }
207
+ }
208
+
209
+ protected boolean isExistLaunchedIntent(Intent intent, Context context) {
210
+ return intent != null && intent.getPackage() != null && context.getPackageManager().getLaunchIntentForPackage(intent.getPackage()) != null;
211
+ }
212
+
213
+ protected boolean startApp(Intent intent, Context context) {
214
+ intent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
215
+ intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
216
+ context.startActivity(intent);
217
+ return true;
218
+ }
219
+
220
+ protected boolean startGooglePlay(Intent intent, Context context) {
221
+ final String appPackageName = intent.getPackage();
222
+
223
+ if(appPackageName == null) {
224
+ Uri dataUri = intent.getData();
225
+
226
+ try {
227
+ Intent addIntent = new Intent(Intent.ACTION_VIEW, intent.getData());
228
+ addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
229
+ addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
230
+ context.startActivity(addIntent);
231
+ } catch (Exception e) {
232
+ String packageName = "com.nhn.android.search"; //appPackageName이 비어있으면 네이버로 보내기(네이버 로그인)
233
+ if(dataUri != null && dataUri.toString().startsWith("wooripay://")) packageName = "com.wooricard.wpay"; //우리카드 예외처리
234
+
235
+ Intent addIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName));
236
+ addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
237
+ addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
238
+ context.startActivity(addIntent);
239
+ // context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
240
+ }
241
+ return true;
242
+ }
243
+ try {
244
+ Intent addIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
245
+ addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
246
+ addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
247
+ context.startActivity(addIntent);
248
+ } catch (android.content.ActivityNotFoundException anfe) {
249
+ Intent addIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName));
250
+ addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
251
+ addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
252
+ context.startActivity(addIntent);
253
+ }
254
+ return true;
255
+ }
256
+
157
257
  @TargetApi(Build.VERSION_CODES.N)
158
258
  @Override
159
259
  public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
@@ -161,15 +261,6 @@ class BPCWebViewClient extends WebViewClient {
161
261
  return this.shouldOverrideUrlLoading(view, url);
162
262
  }
163
263
 
164
- @Override
165
- public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
166
- if (basicAuthCredential != null) {
167
- handler.proceed(basicAuthCredential.username, basicAuthCredential.password);
168
- return;
169
- }
170
- super.onReceivedHttpAuthRequest(view, handler, host, realm);
171
- }
172
-
173
264
  @Override
174
265
  public void onReceivedSslError(final WebView webView, final SslErrorHandler handler, final SslError error) {
175
266
  // onReceivedSslError is called for most requests, per Android docs: https://developer.android.com/reference/android/webkit/WebViewClient#onReceivedSslError(android.webkit.WebView,%2520android.webkit.SslErrorHandler,%2520android.net.http.SslError)
@@ -186,7 +277,7 @@ class BPCWebViewClient extends WebViewClient {
186
277
 
187
278
  if (!topWindowUrl.equalsIgnoreCase(failingUrl)) {
188
279
  // If error is not due to top-level navigation, then do not call onReceivedError()
189
- Log.w(TAG, "Resource blocked from loading due to SSL error. Blocked URL: "+failingUrl);
280
+ Log.w("BPCWebViewManager", "Resource blocked from loading due to SSL error. Blocked URL: "+failingUrl);
190
281
  return;
191
282
  }
192
283
 
@@ -295,10 +386,10 @@ class BPCWebViewClient extends WebViewClient {
295
386
  super.onRenderProcessGone(webView, detail);
296
387
 
297
388
  if(detail.didCrash()){
298
- Log.e(TAG, "The WebView rendering process crashed.");
389
+ Log.e("BPCWebViewManager", "The WebView rendering process crashed.");
299
390
  }
300
391
  else{
301
- Log.w(TAG, "The WebView rendering process was killed by the system.");
392
+ Log.w("BPCWebViewManager", "The WebView rendering process was killed by the system.");
302
393
  }
303
394
 
304
395
  // if webView is null, we cannot return any event
@@ -348,110 +439,4 @@ class BPCWebViewClient extends WebViewClient {
348
439
  public void setProgressChangedFilter(BPCWebView.ProgressChangedFilter filter) {
349
440
  progressChangedFilter = filter;
350
441
  }
351
-
352
-
353
- protected Boolean isSpecialCase(String url) {
354
- return url.matches("^shinhan\\S+$")
355
- || url.startsWith("kftc-bankpay://")
356
- || url.startsWith("v3mobileplusweb://")
357
- || url.startsWith("hdcardappcardansimclick://")
358
- || url.startsWith("nidlogin://")
359
- || url.startsWith("mpocket.online.ansimclick://")
360
- || url.startsWith("wooripay://")
361
- || url.startsWith("kakaotalk://");
362
- }
363
-
364
- protected Boolean isIntent(String url) {
365
- return url.startsWith("intent:");
366
- }
367
- protected Boolean isMarket(String url) {
368
- return url.startsWith("market://");
369
- }
370
-
371
-
372
- protected Intent getIntentWithPackage(String url) {
373
- try {
374
- Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
375
- if(intent.getPackage() == null) {
376
- if (url == null) return intent;
377
- if (url.startsWith("shinhan-sr-ansimclick")) intent.setPackage("com.shcard.smartpay");
378
- else if (url.startsWith("kftc-bankpay")) intent.setPackage("com.kftc.bankpay.android");
379
- else if (url.startsWith("ispmobile")) intent.setPackage("kvp.jjy.MispAndroid320");
380
- else if (url.startsWith("hdcardappcardansimclick")) intent.setPackage("com.hyundaicard.appcard");
381
- else if (url.startsWith("kb-acp")) intent.setPackage("com.kbcard.kbkookmincard");
382
- else if (url.startsWith("mpocket.online.ansimclick")) intent.setPackage("kr.co.samsungcard.mpocket");
383
- else if (url.startsWith("lotteappcard")) intent.setPackage("com.lcacApp");
384
- else if (url.startsWith("cloudpay")) intent.setPackage("com.hanaskcard.paycla");
385
- else if (url.startsWith("nhappvardansimclick")) intent.setPackage("nh.smart.nhallonepay");
386
- else if (url.startsWith("citispay")) intent.setPackage("kr.co.citibank.citimobile");
387
- else if (url.startsWith("kakaotalk")) intent.setPackage("com.kakao.talk");
388
- }
389
- return intent;
390
- } catch (URISyntaxException e) {
391
- e.printStackTrace();
392
- return null;
393
- }
394
- }
395
-
396
- protected boolean isInstallApp(Intent intent, Context context) {
397
- return isExistPackageInfo(intent, context) || isExistLaunchedIntent(intent, context);
398
- }
399
-
400
-
401
- protected boolean isExistPackageInfo(Intent intent, Context context) {
402
- try {
403
- return intent != null && context.getPackageManager().getPackageInfo(intent.getPackage(), PackageManager.GET_ACTIVITIES) != null;
404
- } catch (PackageManager.NameNotFoundException e) {
405
- e.printStackTrace();
406
- return false;
407
- }
408
- }
409
-
410
- protected boolean isExistLaunchedIntent(Intent intent, Context context) {
411
- return intent != null && intent.getPackage() != null && context.getPackageManager().getLaunchIntentForPackage(intent.getPackage()) != null;
412
- }
413
-
414
- protected boolean startApp(Intent intent, Context context) {
415
- intent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
416
- intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
417
- context.startActivity(intent);
418
- return true;
419
- }
420
-
421
- protected boolean startGooglePlay(Intent intent, Context context) {
422
- final String appPackageName = intent.getPackage();
423
-
424
- if(appPackageName == null) {
425
- Uri dataUri = intent.getData();
426
-
427
- try {
428
- Intent addIntent = new Intent(Intent.ACTION_VIEW, intent.getData());
429
- addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
430
- addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
431
- context.startActivity(addIntent);
432
- } catch (Exception e) {
433
- String packageName = "com.nhn.android.search"; //appPackageName이 비어있으면 네이버로 보내기(네이버 로그인)
434
- if(dataUri != null && dataUri.toString().startsWith("wooripay://")) packageName = "com.wooricard.wpay"; //우리카드 예외처리
435
-
436
- Intent addIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName));
437
- addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
438
- addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
439
- context.startActivity(addIntent);
440
- // context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
441
- }
442
- return true;
443
- }
444
- try {
445
- Intent addIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
446
- addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
447
- addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
448
- context.startActivity(addIntent);
449
- } catch (android.content.ActivityNotFoundException anfe) {
450
- Intent addIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName));
451
- addIntent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TASK);
452
- addIntent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
453
- context.startActivity(addIntent);
454
- }
455
- return true;
456
- }
457
442
  }