>  기사  >  Java  >  Android 애플리케이션의 자산 폴더에서 PDF 파일을 올바르게 읽는 방법은 무엇입니까?

Android 애플리케이션의 자산 폴더에서 PDF 파일을 올바르게 읽는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-31 15:11:02409검색

How to correctly read a PDF file from the assets folder in an Android application?

자산 폴더에서 PDF 파일 읽기

Android 애플리케이션의 자산 폴더에서 PDF 파일을 읽으려면 몇 가지 특정 단계가 필요합니다.

제공된 코드를 사용하면 "abc.pdf" 파일에 지정된 파일 경로에 문제가 발생합니다. 사용된 경로 "android.resource://com.project.datastructure/assets/abc.pdf"가 잘못되었습니다.

이 문제를 해결하려면 다음 단계를 따르세요.

  1. "abc.pdf" 파일을 애플리케이션의 내부 저장소에 복사합니다. CopyReadAssets() 메서드를 사용하여 자산 폴더에서 내부 저장소로 파일을 복사합니다. 이렇게 하면 애플리케이션에서 파일에 액세스할 수 있습니다.
  2. 올바른 파일 경로 지정: 자산 폴더 경로를 사용하는 대신 애플리케이션의 내부 저장소에 있는 파일 경로를 사용하세요. Uri.fromFile(file), 여기서 file은 복사된 PDF 파일을 나타내는 File 객체입니다.
  3. 올바른 권한 설정: 애플리케이션의 AndroidManifest.xml 파일에 WRITE_EXTERNAL_STORAGE 권한이 포함되어 있는지 확인하세요. 애플리케이션이 내부 저장소에 쓸 수 있도록 허용합니다.

다음은 필요한 수정 사항이 포함된 업데이트된 코드입니다.

<code class="java">public class SampleActivity extends Activity {

    @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();
            in = null;
            out.flush();
            out.close();
            out = null;
        } catch (Exception e) {
            Log.e("tag", e.getMessage());
        }

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType( Uri.fromFile(file), "application/pdf");

        startActivity(intent);
    }

    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);
        }
    }

}</code>

이 업데이트된 코드는 "abc.pdf"를 올바르게 복사합니다. 파일을 애플리케이션의 내부 저장소에 저장하고 올바른 파일 경로를 사용하여 타사 PDF 뷰어에서 PDF를 엽니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.