반응형
참고자료 : https://developer.android.com/guide/webapps/webview?hl=ko
WebView에서 웹 앱 빌드 | Android 개발자 | Android Developers
WebView에서 웹 앱 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경
developer.android.com
1. Local HTML파일 불러오기
2. Javascript 인터페이스 테스트
먼저, Test를 위해서 로컬 html을 불러와보자.
◆ 인앱 콘텐츠 로드(WebViewAssetLoader)
인터넷 대신 애플리케이션에 삽입되어 있는 웹기반 컨텐츠를 정적으로 컴파일할 수도 있다.
장점 : 인터넷 액세스 필요가 없으며, 사용자 대역폭을 소비하지 않는다.
단점 : 웹 기반 컨텐츠 업데이트 하려면, 앱을 업데이트 해야함.(웹의 장점없어짐)
0. build.gradle 추가
implementation 'androidx.webkit:webkit:1.4.0'
1. WebVeiw 자산 로더 생성
class LocalContentWebViewClient (private val assetLoader: WebViewAssetLoader) : WebViewClientCompat() {
override fun shouldInterceptRequest(
view: WebView,
request: WebResourceRequest
): WebResourceResponse? {
return assetLoader.shouldInterceptRequest(request.url)
}
// to support API < 21
@Deprecated("Deprecated in Java")
override fun shouldInterceptRequest(
view: WebView,
url: String
): WebResourceResponse? {
return assetLoader.shouldInterceptRequest(Uri.parse(url))
}
}
2. 웹뷰에 webViewClient 설정 및 LoadUrl
class JavascriptInterfaceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// inflate : xml의 뷰를 객체화 해준다.
val binding = ActivityJavascriptBinding.inflate(layoutInflater)
setContentView(binding.root)
val myWebView = binding.webview
val assetLoader = WebViewAssetLoader.Builder()
.addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this))
.addPathHandler("/res/", WebViewAssetLoader.ResourcesPathHandler(this))
.build()
myWebView.webViewClient =LocalContentWebViewClient(assetLoader)
myWebView.loadUrl("https://appassets.androidplatform.net/assets/javascriptInterfaceTest.html")
}
}
*javascriptInterfaceTest.html
더보기
<html>
<head>
</head>
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
<body>
<input
type="button"
value="Say hello"
onClick="showAndroidToast('Hello Android!')" />
<p>This file was loaded from in-app content</p>
</body>
</html>
결과 화면!!
* assets 폴더 생성(아마 res아래 하려하면 안보일것이다.)
app 우클릭>new>Folder>Assets Folder
반응형
'안드로이드' 카테고리의 다른 글
[안드로이드] Thread, Thread간 통신/ Handler, Looper의 개념 (0) | 2023.03.21 |
---|---|
[안드로이드] 2-2. WebView 웹뷰 - Javascript Interface(Kotlin) (0) | 2023.03.11 |
[안드로이드] 1. WebView 웹뷰- 띄우기 (Kotlin) (0) | 2023.03.11 |
[안드로이드] Permission - 권한 허용 요청(requestPermissions)(feat. Kotlin) (0) | 2023.01.27 |
[안드로이드] Permission - 권한 확인하기(checkSelfPermission)(feat. Kotlin) (0) | 2023.01.27 |
댓글