Как открывать pdf, который находится в папке raw или в папке assets моего приложения android?

Я начинаюсь в темах android и нуждаюсь в том, чтобы узнать как открывать файл pdf, что он находится в папке /raw или в папке /assets моего приложения я работаю с Андроид Студио.

Безразлично открывать это с .apk, установленным в устройстве или внутри в приложение.

1
задан 23.01.2017, 23:33
0 ответов

Чтобы это открывать как выбор состоит в том, чтобы реализовывать одну копировать файл, и эту копию открывать ее с Intent, который манипулировал бы файлами типа "application/pdf", например:

introducir la descripción de la imagen aquí

Давайте верить в метод, чтобы копировать файл каталога /raw во внешнее хранение:

private void CopyRawToSDCard(int id, String path) {
    InputStream in = getResources().openRawResource(id);
    FileOutputStream out = null;
    try {
        out = new FileOutputStream(path);
    byte[] buff = new byte[1024];
    int read = 0;
        while ((read = in.read(buff)) > 0) {
            out.write(buff, 0, read);
        }
        in.close();
        out.close();
        Log.i(TAG, "copyFile, success!");
    } catch (FileNotFoundException e) {
        Log.e(TAG, "copyFile FileNotFoundException " + e.getMessage());
    } catch (IOException e) {
        Log.e(TAG, "copyFile IOException " + e.getMessage());
    }

Чтобы открывать файл, мы копируем и это открываем посредством Intent:

   CopyRawToSDCard(R.raw.miarchivo, Environment.getExternalStorageDirectory() + "/miarchivo.pdf" );

      File pdfFile = new File(Environment.getExternalStorageDirectory(),"/miarchivo.pdf" );//File path
        if (pdfFile.exists()){ //Revisa si el archivo existe!
            Uri path = Uri.fromFile(pdfFile);
            Intent intent = new Intent(Intent.ACTION_VIEW);
            //define el tipo de archivo
            intent.setDataAndType(path, "application/pdf");
            intent.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP);
            //Inicia pdf viewer
            startActivity(intent);
        } else {
            Toast.makeText(getApplicationContext(), "No existe archivo! ", Toast.LENGTH_SHORT).show();
        }
1
ответ дан 03.12.2019, 17:31
  • 1
    Спасибо как только он это протестировал я говорю ему. –  24.01.2017, 18:08