Как мне указать правильный путь при создании PDF-файла в onResultActivity? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь создать PDF. Я получаю эту ошибку "E / PDFCreator: ioException: java .io.FileNotFoundException: /document/959/myNotesPdf.pdf (Нет такого файла или каталога)". Таким образом, он создает PDF-файл размером 0 байт.

Как указать правильный путь при создании файла?

Я добавил разрешения.

<uses-permission android:name="android.permission.WRITE_SETTINGS." />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Я взял Преимущество этой ссылки и написал код.

Как написать файл, используя Intent.ACTION_CREATE_DOCUMENT

{ ссылка }

Мои коды:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    fileName = "myNotesPdf.pdf";

    textViewPath = findViewById(R.id.txtPath);

    buttonGetPath = findViewById(R.id.btnGetPath);

    buttonGetPath.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            myFileIntent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
            myFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
            myFileIntent.setType("application/pdf");
            myFileIntent.putExtra(Intent.EXTRA_TITLE,fileName);
            startActivityForResult(myFileIntent,WRITE_REQUEST_CODE);

        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

            if (resultCode == RESULT_OK && requestCode == WRITE_REQUEST_CODE) {

                String path1 = data.getData().getPath();
                textViewPath.setText(path1);

                //FileOutputStream fOut =  (FileOutputStream) getContentResolver().openOutputStream(data.getData());
                Document doc = new Document();

                try {

                    String path = data.getData().getPath();
                    File file = new File(path,fileName);

                    FileOutputStream fOut = new FileOutputStream(file);

                    PdfWriter.getInstance(doc, fOut);

                    //open the document
                    doc.open();

                    Paragraph p1 = new Paragraph("sdasdasdas");

                    Font paraFont = new Font();
                    p1.setAlignment(Paragraph.ALIGN_CENTER);
                    p1.setFont(paraFont);

                    //add paragraph to document
                    doc.add(p1);
                    fOut.flush();
                    fOut.close();
                } catch (DocumentException de) {
                    Log.e("PDFCreatorDoc", "DocumentException:" + de);
                } catch (IOException e) {
                    Log.e("PDFCreator", "ioException:" + e);
                }
                finally {
                    doc.close();
                }
            }      
  //  super.onActivityResult(requestCode, resultCode, data);
}}
...