> Java > java지도 시간 > Android 앱의 자산 폴더에서 PDF 파일을 읽는 방법은 무엇입니까?

Android 앱의 자산 폴더에서 PDF 파일을 읽는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-29 01:52:30
원래의
364명이 탐색했습니다.

How to Read a PDF File from the Assets Folder in an Android App?

자산 폴더에서 PDF 파일 읽기

이 문서에서는 Android 애플리케이션 내의 자산 폴더에서 PDF 파일을 읽을 때 발생하는 문제를 다룹니다. PDF에 액세스하려고 시도하는 사용자에게는 "파일 경로가 유효하지 않습니다."라는 오류 메시지가 표시됩니다.

코드 분석

제공된 코드는 자산 폴더에서 PDF 파일을 검색합니다. . 그러나 인텐트에서 PDF를 열기 위해 지정된 경로는 자산 폴더를 참조하므로 권한 및 액세스에 문제가 발생할 수 있습니다.

해결책

이 문제를 해결하려면, 다음 코드를 고려하세요.

public class SampleActivity extends Activity {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    CopyReadAssets();
}

private void CopyReadAssets() {
    AssetManager assetManager = getAssets();
    InputStream in = null;
    OutputStream out = null;
    File file = new File(getFilesDir(), "abc.pdf");
    try {
        in = assetManager.open("abc.pdf");
        out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);
        copyFile(in, out);
        in.close();
        out.flush();
        out.close();
    } catch (Exception e) {
        Log.e("tag", e.getMessage());
    }

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.parse("file://" + getFilesDir() + "/abc.pdf"), "application/pdf");

    //Grant permission to the user after confirming existence of the file
    if (file.exists()) {
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
        try {
            getApplicationContext().startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, "NO PDF Viewer", Toast.LENGTH_SHORT).show();
        }
    }
}

private void copyFile(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int read;
    while ((read = in.read(buffer)) != -1) {
        out.write(buffer, 0, read);
    }
}
로그인 후 복사

}

설명

  • 이 코드는 자산 폴더의 PDF 파일을 앱 내부 저장소 내의 파일로 읽어옵니다.
  • 이제 인텐트의 경로가 자산 폴더의 파일을 가리키도록 업데이트됩니다. 내부 저장소에 액세스 권한을 보장합니다.
  • 이 방법을 사용하면 "파일 경로가 유효하지 않습니다." 오류가 발생하지 않습니다.

추가 고려 사항

  • 매니페스트 파일에 WRITE_EXTERNAL_STORAGE 권한이 부여되어 있는지 확인하세요.
  • PDF 파일이 자산 폴더 내의 지정된 위치에 있는지 확인하세요.

위 내용은 Android 앱의 자산 폴더에서 PDF 파일을 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿