открытие файла PDF во внешнем хранилище в приложении для просмотра PDF по умолчанию нажатием кнопки - PullRequest
0 голосов
/ 02 августа 2020

при нажатии кнопки ниже выполняется функция, я дал ей разрешение на хранение, когда было предложено. без строки StartActivity он не дает сбоев, может ли кто-нибудь помочь мне с этим, я хочу открыть определенный c существующий файл с помощью средства просмотра PDF по умолчанию устройства. Нет ошибок с разрешениями или существованием файла или присутствием приложения pdf viwer.

publi c void openfile (View v) {

    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_MEDIA);
    } else {

        File pdfFile = new File(Environment.getExternalStorageDirectory() + "/Zio app/" + "notes.pdf");  // -> filename = maven.pdf
        if (pdfFile.exists()) {

            Uri path = Uri.fromFile(pdfFile);
            Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
            pdfIntent.setDataAndType(path, "application/pdf");
            pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_CLEAR_TOP);

            try {
                startActivity(pdfIntent);
            } catch (ActivityNotFoundException e) {
                Toast.makeText(getApplicationContext(), "No Application available to view PDF", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(NewActivity.this, "No such file exists", Toast.LENGTH_SHORT).show();
        }
    }
}

Я пробовал много раз, не получилось 'даже не показывал ошибку "не найдено ни одного приложения для просмотра pdf" сразу после сбоя

1 Ответ

0 голосов
/ 02 августа 2020

наконец-то я получил ответ, теперь он работает, пришлось использовать FileProvider, теперь это больше похоже на

, если кто-то столкнется с такой же проблемой, дайте мне знать, я опубликую пошаговое решение

publi c void openfile (Просмотр v) {

    if (!checkstoragepermission()) {
        requestReadpermission();`
    }else {
        File pdfFile = new File(Environment.getExternalStorageDirectory() + "/Zio 
       app/" + "/materials/"+"notes.pdf");  // -> filename = maven.pdf
        if (pdfFile.exists()) {

            File imagePath = new File(Environment.getExternalStorageDirectory() + "/" 
            + "Zio app" ,"materials");
            File newFile = new File(imagePath, "notes.pdf");
            Uri path = FileProvider.getUriForFile(this, 
             "com.example.zio.fileprovider", newFile);

            Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
            pdfIntent.setDataAndType(path, "application/pdf");
            pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | 
            Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            Intent intent = Intent.createChooser(pdfIntent, "Open File");
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | 
            Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_CLEAR_TOP);


            try {
                startActivity(intent);
            } catch (ActivityNotFoundException e) {
                Toast.makeText(getApplicationContext(), "No Application available to 
                 view PDF", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(NewActivity.this, "No such file exists", 
              Toast.LENGTH_SHORT).show();
        }

    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...