반응형
    
    
    
  참고자료 : 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 | 
 
			
			 
				
			
댓글