728x90
반응형
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var webView : WebView
private val header = mutableMapOf<String, String>()
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
webView = binding.webView
webView.apply {
webChromeClient = WebChromeClient()
webViewClient = WebViewClient()
settings.apply {
javaScriptEnabled = true
javaScriptCanOpenWindowsAutomatically = true // window.open() 동작 허용
loadsImagesAutomatically = true
domStorageEnabled = false
setSupportZoom(false)
builtInZoomControls = false
displayZoomControls = false
setSupportMultipleWindows(true)
}
}
header[HEADER_NAME] = HEADER_VALUE
// webViewClient가 웹 페이지가 로드하는 동안 요청을 가로채고 제어할 수 있기 때문에 loadUrl과 같이 사용함
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
request?.let {
view?.loadUrl(it.url.toString(), header)
return true
}
return super.shouldOverrideUrlLoading(view, request)
}
}
webView.loadUrl(WEBVIEW_URL, header)
}
companion object {
private const val WEBVIEW_URL = "https://www.naver.com/"
private const val HEADER_NAME = "headerName"
private const val HEADER_VALUE = "headerValue"
}
}
728x90
반응형
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오 코틀린] Compose Material2에서 Material3로 바뀐 뒤 Surface, Card elevation 주는 방법 (0) | 2024.03.05 |
---|---|
[안드로이드 스튜디오 코틀린] 시간 조절하는 SeekBar Custom (0) | 2024.03.04 |
[안드로이드 스튜디오 코틀린] Application 초기화 하는 방법 with Jetpack (0) | 2024.01.11 |
[안드로이드 스튜디오 코틀린] OnBackPressed Deprecated 대처 방법 (val, lateinit var) (0) | 2024.01.10 |
[안드로이드 스튜디오 코틀린] 약관 동의 (전체, 필수, 선택) 예제 (1) | 2023.09.24 |