ACTION_CREATE_DOCUMENT 쓰는 pdf 파일로 url 에서 응답을 안드로이드?

0

질문

내가 사용하고 공유 저장소를 쓰는 pdf 파일입니다. 파일을 만들지만 그것은 0 바이트입니다. 지 어떤 일이 일어나는지 이해할 수 있는 문제입니다.

아래에 나의 코드

  • ACTION_CREATE_DOCUMENT

    fun saveFile() {
    
     val exportIntent = Intent(Intent.ACTION_CREATE_DOCUMENT)
     exportIntent.addCategory(Intent.CATEGORY_OPENABLE)
     exportIntent.type = "application/pdf"
     val filename = "test.pdf"
     exportIntent.putExtra(Intent.EXTRA_TITLE, filename)
     startForResult.launch(exportIntent)
    }
    
  • 활동 결과

    private val MEGABYTE = 1024 * 1024
    
    val startForResult =
     registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
         if (result.resultCode == Activity.RESULT_OK) {
             val intent = result.data
             if (intent?.data != null) {
                 val uri: Uri = intent.data!!
                 GlobalScope.launch {
                     writeFile(uri)
                 }
    
    
             }
         }
     }
    
  • 쓰 파일 방법

     fun writeFile(uri:Uri){
     val outputStream: OutputStream? =
         requireContext().contentResolver.openOutputStream(uri)
     if (outputStream != null) {
         val url = URL(some url)
         val urlConnection: HttpURLConnection =
             url.openConnection() as HttpURLConnection
         urlConnection.setRequestMethod("GET")       
         urlConnection.setDoOutput(true)
         urlConnection.connect()
    
         val inputStream: InputStream = urlConnection.getInputStream()
    
         val buffer = ByteArray(MEGABYTE)
         var bufferLength = 0
         while (inputStream.read(buffer).also { bufferLength = it } > 0) {
             outputStream.write(buffer, 0, bufferLength)
         }
    
         outputStream.close()
     }
     }
    
android file storage
2021-11-23 05:49:09
2
0

덕분에서 코멘트@blackapps 수 있었다 그것을 밖으로 작동 제거 다음

urlConnection.setRequestMethod("GET")
urlConnection.setDoOutput(true)

올바른 기능이

fun writeFile(uri: Uri, docUrl: String) {
    val outputStream: OutputStream? =
        requireContext().contentResolver.openOutputStream(uri)
    if (outputStream != null) {
        val url =
            URL(docUrl)
        val urlConnection: HttpURLConnection =
            url.openConnection() as HttpURLConnection
        urlConnection.connect()

        val inputStream: InputStream = urlConnection.getInputStream()
        val buffer = ByteArray(1024 * 1024)
        var bufferLength = 0
        while (inputStream.read(buffer).also { bufferLength = it } > 0) {
            outputStream.write(buffer, 0, bufferLength)
        }
        outputStream.close()
    }
}
2021-11-23 08:24:52
0

체크인 inputstream 액세스할 수 있는지에 로그인하여 inputStream.사용 가능() 해야 합>0

사용은 이 논리를 쓰 inputstream 을 outputstream

byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, len);
}
outputStream.close()
2021-11-23 12:22:57

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................