@24i/smartapps-bigscreen-rnv-build-engine 5.0.0-alpha.25 → 5.0.0
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.
- package/build-freshness.js +158 -0
- package/dist/.build-freshness.json +1010 -0
- package/dist/templates/platforms/firetv/project/README.md +196 -0
- package/dist/templates/platforms/firetv/project/amazoniap/build.gradle +41 -0
- package/dist/templates/platforms/firetv/project/amazoniap/consumer-rules.pro +0 -0
- package/dist/templates/platforms/firetv/project/amazoniap/proguard-rules.pro +21 -0
- package/dist/templates/platforms/firetv/project/amazoniap/src/main/kotlin/com/twentyfouri/bridgetv/amazoniap/AmazonIapService.kt +91 -0
- package/dist/templates/platforms/firetv/project/amazoniap/src/main/kotlin/com/twentyfouri/bridgetv/amazoniap/AmazonIapServiceFactory.kt +13 -0
- package/dist/templates/platforms/firetv/project/app/build.gradle +138 -0
- package/dist/templates/platforms/firetv/project/app/proguard-rules.pro +47 -0
- package/dist/templates/platforms/firetv/project/app/src/bigscreenAppstage/kotlin/com/twentyfouri/tvbridge/Flavor.kt +9 -0
- package/dist/templates/platforms/firetv/project/app/src/bigscreenAppstage/res/raw/configuration.json +8 -0
- package/dist/templates/platforms/firetv/project/app/src/main/AndroidManifest.xml +52 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/FlavorBase.kt +9 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/bridge/BridgeFromJavaScript.kt +421 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +121 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +19 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/configuration/ConfigCallback.kt +6 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/configuration/ConfigProvider.kt +27 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/configuration/Drm.kt +10 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/configuration/UserAgent.kt +6 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/BaseApplication.kt +73 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/di/ActivityComponent.kt +13 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/di/ActivityModule.kt +14 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/di/ApplicationComponent.kt +23 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +51 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/di/PerActivity.kt +26 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/LocalStorage.kt +30 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/LoggingDrmCallback.kt +38 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/OverriddenHttpMediaDrmCallback.kt +134 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/PlayerFactoryBitmovinCustomized.kt +19 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/PlayerFactoryConfigured.kt +37 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +106 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerNpaw.kt +581 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/PlayerFactoryVersion.kt +27 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/SimpleActivityLifecycleCallback.kt +32 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/global/utils/SourceDrmOverridden.kt +91 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/sound/TouchPlayer.kt +86 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/client/BridgeWebView.kt +82 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/client/BridgeWebViewClient.kt +114 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/model/AnalyticsPlaybackInfo.kt +10 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/model/ContentModel.kt +14 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/model/DrmModel.kt +20 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/model/MediaEventType.kt +31 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/parser/PlaybackInfoParser.kt +10 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/parser/SourceParser.kt +89 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/parser/TrackJsonModelParser.kt +58 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/view/Mainview.kt +18 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/view/PlayerCache.kt +15 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/view/WebViewActivity.kt +252 -0
- package/dist/templates/platforms/firetv/project/app/src/main/kotlin/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +748 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/drawable/button_background_focus.xml +10 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/drawable/button_background_normal.xml +7 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/drawable/button_background_pressed.xml +7 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/drawable/button_focus.xml +8 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/layout/activity_web_view.xml +28 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/raw/click.ogg +0 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/values/styles.xml +12 -0
- package/dist/templates/platforms/firetv/project/app/src/main/res/xml/network_security_config.xml +4 -0
- package/dist/templates/platforms/firetv/project/build.gradle +45 -0
- package/dist/templates/platforms/firetv/project/common/build.gradle +41 -0
- package/dist/templates/platforms/firetv/project/common/consumer-rules.pro +0 -0
- package/dist/templates/platforms/firetv/project/common/proguard-rules.pro +21 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/Util.kt +11 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/IapCallback.kt +11 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/IapException.kt +14 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/IapProduct.kt +16 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/IapPurchase.kt +9 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/IapService.kt +14 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/IapServiceFactory.kt +8 -0
- package/dist/templates/platforms/firetv/project/common/src/main/kotlin/com/twentyfouri/tvbridge/common/iap/NullIapService.kt +32 -0
- package/dist/templates/platforms/firetv/project/googleiap/build.gradle +41 -0
- package/dist/templates/platforms/firetv/project/googleiap/consumer-rules.pro +0 -0
- package/dist/templates/platforms/firetv/project/googleiap/proguard-rules.pro +21 -0
- package/dist/templates/platforms/firetv/project/googleiap/src/main/kotlin/com/twentyfouri/tvbridge/googleiap/GoogleIapService.kt +6 -0
- package/dist/templates/platforms/firetv/project/googleiap/src/main/kotlin/com/twentyfouri/tvbridge/googleiap/GoogleIapServiceFactory.kt +13 -0
- package/dist/templates/platforms/firetv/project/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/dist/templates/platforms/firetv/project/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/dist/templates/platforms/firetv/project/gradle.properties +4 -0
- package/dist/templates/platforms/firetv/project/gradlew +251 -0
- package/dist/templates/platforms/firetv/project/gradlew.bat +94 -0
- package/dist/templates/platforms/firetv/project/proguard-rules.pro +42 -0
- package/dist/templates/platforms/firetv/project/settings.gradle +4 -0
- package/index.js +2 -31
- package/package.json +4 -3
- package/project.json +57 -11
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
package com.twentyfouri.tvbridge.webview.view
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint
|
|
4
|
+
import android.app.Activity
|
|
5
|
+
import android.graphics.Point
|
|
6
|
+
import android.media.AudioManager
|
|
7
|
+
import android.media.AudioManager.OnAudioFocusChangeListener
|
|
8
|
+
import android.os.Bundle
|
|
9
|
+
import android.text.Editable
|
|
10
|
+
import android.text.TextWatcher
|
|
11
|
+
import android.util.Log
|
|
12
|
+
import android.view.KeyEvent
|
|
13
|
+
import android.view.View
|
|
14
|
+
import android.view.View.MeasureSpec
|
|
15
|
+
import android.view.WindowManager
|
|
16
|
+
import android.view.inputmethod.InputMethodManager
|
|
17
|
+
import android.widget.RelativeLayout
|
|
18
|
+
import android.widget.Toast
|
|
19
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
20
|
+
import androidx.media.AudioAttributesCompat
|
|
21
|
+
import androidx.media.AudioFocusRequestCompat
|
|
22
|
+
import androidx.media.AudioManagerCompat
|
|
23
|
+
import com.twentyfouri.tvbridge.configuration.BridgeConfig
|
|
24
|
+
import com.twentyfouri.tvbridge.databinding.ActivityWebViewBinding
|
|
25
|
+
import com.twentyfouri.tvbridge.global.BaseApplication
|
|
26
|
+
import com.twentyfouri.tvbridge.global.di.ActivityComponent
|
|
27
|
+
import com.twentyfouri.tvbridge.global.di.ActivityModule
|
|
28
|
+
import com.twentyfouri.tvbridge.global.di.DaggerActivityComponent
|
|
29
|
+
import com.twentyfouri.tvbridge.sound.TouchPlayer
|
|
30
|
+
import com.twentyfouri.tvbridge.webview.model.MediaEventType
|
|
31
|
+
import com.twentyfouri.tvbridge.webview.viewmodel.WebViewModel
|
|
32
|
+
import java.net.CookieHandler
|
|
33
|
+
import java.net.CookieManager
|
|
34
|
+
import java.net.CookiePolicy
|
|
35
|
+
|
|
36
|
+
class WebViewActivity : AppCompatActivity(), Mainview {
|
|
37
|
+
|
|
38
|
+
private var initialized: Boolean = false
|
|
39
|
+
private lateinit var component: ActivityComponent
|
|
40
|
+
private lateinit var binding: ActivityWebViewBinding
|
|
41
|
+
private lateinit var config: BridgeConfig
|
|
42
|
+
private lateinit var audioManager: AudioManager
|
|
43
|
+
private lateinit var viewModel: WebViewModel
|
|
44
|
+
private lateinit var touchPlayer: TouchPlayer
|
|
45
|
+
|
|
46
|
+
private val audioFocusListener = OnAudioFocusChangeListener { /* we actually don't care */ }
|
|
47
|
+
|
|
48
|
+
@SuppressLint("SetJavaScriptEnabled")
|
|
49
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
50
|
+
super.onCreate(savedInstanceState)
|
|
51
|
+
|
|
52
|
+
if (!isTaskRoot) {
|
|
53
|
+
finish()
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
component = DaggerActivityComponent.builder()
|
|
58
|
+
.applicationComponent((application as BaseApplication).component)
|
|
59
|
+
.activityModule(ActivityModule(this))
|
|
60
|
+
.build()
|
|
61
|
+
config = component.configuration
|
|
62
|
+
touchPlayer = component.touchPlayer
|
|
63
|
+
viewModel = component.viewModelFactory.get()
|
|
64
|
+
audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
|
|
65
|
+
|
|
66
|
+
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
|
67
|
+
val currentHandler = CookieHandler.getDefault()
|
|
68
|
+
if (currentHandler !== defaultCookieManager) {
|
|
69
|
+
CookieHandler.setDefault(defaultCookieManager)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
binding = ActivityWebViewBinding.inflate(layoutInflater)
|
|
73
|
+
setContentView(binding.root)
|
|
74
|
+
binding.playerView.playerFactory = viewModel.playerFactory
|
|
75
|
+
viewModel.attachView(this)
|
|
76
|
+
viewModel.configureWebView(binding.webview)
|
|
77
|
+
viewModel.player = binding.playerView.player
|
|
78
|
+
|
|
79
|
+
loadUrl(config.baseUrl)
|
|
80
|
+
|
|
81
|
+
initialized = true
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
override fun reloadPlayer() {
|
|
85
|
+
runOnUiThread {
|
|
86
|
+
binding.playerView.playerFactory = viewModel.playerFactory
|
|
87
|
+
viewModel.player = binding.playerView.player
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
override fun hideKeyboard() {
|
|
92
|
+
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as? InputMethodManager
|
|
93
|
+
?: return
|
|
94
|
+
//If imm is null do nothing
|
|
95
|
+
//Find the currently focused view, so we can grab the correct window token from it.
|
|
96
|
+
//If no view currently has focus, create a new one, just so we can grab a window token from it
|
|
97
|
+
val view = currentFocus ?: View(this)
|
|
98
|
+
imm.hideSoftInputFromWindow(view.windowToken, 0)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
override fun setBlackCurtainVisibility(visibility: Int) {
|
|
102
|
+
runOnUiThread {
|
|
103
|
+
binding.blackCurtain.visibility = visibility
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
override fun showMessage(message: String?) {
|
|
108
|
+
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
override fun requestAudioFocus(): Int {
|
|
112
|
+
return AudioManagerCompat.requestAudioFocus(
|
|
113
|
+
audioManager,
|
|
114
|
+
AudioFocusRequestCompat
|
|
115
|
+
.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN)
|
|
116
|
+
.setAudioAttributes(
|
|
117
|
+
AudioAttributesCompat
|
|
118
|
+
.Builder()
|
|
119
|
+
.setContentType(AudioAttributesCompat.CONTENT_TYPE_MOVIE)
|
|
120
|
+
.build()
|
|
121
|
+
)
|
|
122
|
+
.setOnAudioFocusChangeListener(audioFocusListener)
|
|
123
|
+
.build()
|
|
124
|
+
)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
override fun abandonAudioFocus() {
|
|
128
|
+
AudioManagerCompat.abandonAudioFocusRequest(
|
|
129
|
+
audioManager,
|
|
130
|
+
AudioFocusRequestCompat
|
|
131
|
+
.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN)
|
|
132
|
+
.setOnAudioFocusChangeListener(audioFocusListener)
|
|
133
|
+
.build()
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
public override fun onResume() {
|
|
138
|
+
super.onResume()
|
|
139
|
+
viewModel.checkNewPurchases()
|
|
140
|
+
viewModel.resumePlayer()
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
public override fun onPause() {
|
|
144
|
+
viewModel.pausePlayer()
|
|
145
|
+
super.onPause()
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
public override fun onDestroy() {
|
|
149
|
+
if (initialized) {
|
|
150
|
+
viewModel.releasePlayer()
|
|
151
|
+
}
|
|
152
|
+
super.onDestroy()
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
override fun goFullscreen() {
|
|
156
|
+
val layoutParams = binding.playerView.layoutParams as RelativeLayout.LayoutParams
|
|
157
|
+
layoutParams.width = -1
|
|
158
|
+
layoutParams.height = -1
|
|
159
|
+
layoutParams.leftMargin = 0
|
|
160
|
+
layoutParams.topMargin = 0
|
|
161
|
+
val wm = getSystemService(WINDOW_SERVICE) as WindowManager
|
|
162
|
+
val display = wm.defaultDisplay
|
|
163
|
+
val size = Point()
|
|
164
|
+
display.getSize(size)
|
|
165
|
+
val width = size.x
|
|
166
|
+
val height = size.y
|
|
167
|
+
binding.playerView.layoutParams = layoutParams
|
|
168
|
+
binding.playerView.measure(
|
|
169
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
170
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
171
|
+
)
|
|
172
|
+
binding.playerView.layout(width, height, 0, 0)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
override fun launchIapPurchase(sku: String) {
|
|
176
|
+
viewModel.launchIapPurchase(this, sku)
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
override fun exitFullscreen(width: Int, height: Int, left: Int, top: Int) {
|
|
180
|
+
val layoutParams = binding.playerView.layoutParams as RelativeLayout.LayoutParams
|
|
181
|
+
layoutParams.width = width
|
|
182
|
+
layoutParams.height = height
|
|
183
|
+
layoutParams.leftMargin = left
|
|
184
|
+
layoutParams.topMargin = top
|
|
185
|
+
|
|
186
|
+
//set the layout inner and outer sizes
|
|
187
|
+
binding.playerView.layoutParams = layoutParams
|
|
188
|
+
binding.playerView.layout(width, height, left, top)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
|
192
|
+
when (event.keyCode) {
|
|
193
|
+
KeyEvent.KEYCODE_DPAD_CENTER -> goToUrl()
|
|
194
|
+
else -> {
|
|
195
|
+
viewModel.sendKeyCode(event.keyCode, MediaEventType.KEY_DOWN)
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return super.onKeyDown(keyCode, event)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
|
202
|
+
playTouchSounds(event)
|
|
203
|
+
return super.dispatchKeyEvent(event)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private fun playTouchSounds(event: KeyEvent) {
|
|
207
|
+
if (event.action != KeyEvent.ACTION_DOWN) {
|
|
208
|
+
return
|
|
209
|
+
}
|
|
210
|
+
when (event.keyCode) {
|
|
211
|
+
KeyEvent.KEYCODE_DPAD_RIGHT,
|
|
212
|
+
KeyEvent.KEYCODE_DPAD_LEFT,
|
|
213
|
+
KeyEvent.KEYCODE_DPAD_UP,
|
|
214
|
+
KeyEvent.KEYCODE_DPAD_DOWN,
|
|
215
|
+
KeyEvent.KEYCODE_DPAD_CENTER ->
|
|
216
|
+
if (config.isEnabledTouchSound) {
|
|
217
|
+
touchPlayer.play()
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private fun goToUrl() {
|
|
223
|
+
viewModel.onClickGo()
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
|
|
227
|
+
// Send these key presses to the WebView, through a JavaScript bridge.
|
|
228
|
+
viewModel.sendKeyCode(event.keyCode, MediaEventType.KEY_UP)
|
|
229
|
+
return true
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
override fun onKeyLongPress(keyCode: Int, event: KeyEvent): Boolean {
|
|
233
|
+
// Send these key presses to the WebView, through a JavaScript bridge.
|
|
234
|
+
viewModel.sendKeyCode(event.keyCode, MediaEventType.KEY_PRESS)
|
|
235
|
+
return true
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
override fun loadUrl(url: String?) {
|
|
239
|
+
if (url.isNullOrEmpty()) return
|
|
240
|
+
binding.webview.visibility = View.VISIBLE
|
|
241
|
+
binding.webview.loadUrl(url)
|
|
242
|
+
if (url.startsWith("http")) {
|
|
243
|
+
binding.webview.requestFocus()
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
companion object {
|
|
248
|
+
private val defaultCookieManager: CookieManager = CookieManager().apply {
|
|
249
|
+
setCookiePolicy(CookiePolicy.ACCEPT_ALL)
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|