본문 바로가기
개발노트/Android

[Android] webView 파일 업로드

by 전지적진영시점 2023. 3. 25.
반응형

개발 환경

---------------------------------

OS : Mac

개발 툴 : Android Studio

개발 언어 : Kotlin

targetSdk : 31

minSdk : 23

---------------------------------

 

웹뷰에서 파일 업로드 버튼을 클릭하면 기기의 내부 저장소에 접근되어야 합니다.

 

기기 내부 저장소에 접근하려면?

권한부터 줍시다.

 

WRITE_EXTERNAL_STORAGE 권한을 요청합니다.

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    tools:node="replace" />

 

 

 

FileChooserCallback 객체를 선언해줍니다.

 

var mFileChooserCallback : ValueCallback<Array<Uri>>? = null

 

WebChromeClient 클래스 안에 onShowFileChooser 메서드를 override 해줍니다.

 

override fun onShowFileChooser(
    webView: WebView?,
    filePathCallback: ValueCallback<Array<Uri>>?,
    fileChooserParams: WebChromeClient.FileChooserParams?
): Boolean {

    if (mFileChooserCallback != null) {
        mFileChooserCallback = null
    }

    mFileChooserCallback = filePathCallback

    Intent(Intent.ACTION_GET_CONTENT).apply {
        addCategory(Intent.CATEGORY_OPENABLE)
        type = "*/*"
        startActivityForResult(Intent.createChooser(this, ""), FILE_CHOOSE)
    }
    
    return true
}

 

모든 파일에 접근 가능하게 하겠다는 의미입니다.

java로는 setType = "*/*" 입니다.

 

type = "*/*"

 

반응형

댓글