FileProvider - Datei Öffnen-Download-Verzeichnis aus

Ich kann nicht öffnen Sie eine beliebige Datei aus dem Download-Ordner.

Kann ich eine Datei herunterladen und speichern Sie im Download-Ordner mit dabei:

   DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
    request.setDescription(descricao);
    request.setTitle(titulo);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        request.allowScanningByMediaScanner();
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
    }
    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, nome);

    enq = downloadManager.enqueue(request);

Danach meine Datei richtig gespeichert im Verzeichnis: Android >> Interne Shared-Storage - >> Download.
***Dieser Weg, den ich sehe, ist ein manuelles öffnen des Gerät ist hd in ubuntu. Wie das Bild zeigt den Weg.
Android HD von ubuntu Ordner - siehe Pfad

Und ich versuchen, öffnen Sie diese Datei mit dieser:

downloadManager = (DownloadManager)getContext().getSystemService(DOWNLOAD_SERVICE);
        BroadcastReceiver receiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if(DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
                    long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
                    DownloadManager.Query query = new DownloadManager.Query();
                    query.setFilterById(enq);
                    Cursor c = downloadManager.query(query);
                    if(c.moveToFirst()) {
                        int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
                        if(DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
                            String uriString = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));

                            if (uriString.substring(0, 7).matches("file://")) {
                                uriString =  uriString.substring(7);
                            }

                            File file = new File(uriString);

                            Uri uriFile = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID + ".fileprovider", file);
                            String mimetype = "application/pdf";
                            Intent myIntent = new Intent(Intent.ACTION_VIEW);
                            myIntent.setDataAndType(uriFile, mimetype);

                            Intent intentChooser = Intent.createChooser(myIntent, "Choose Pdf Application");
                            startActivity(intentChooser);
                        }
                    }
                }
            }
        };

        getContext().registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

Ich erkläre meine Datei-Dienstleister in der manifest-Datei mit dieser:

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

- und mit dieser:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="Download" path="Download/"/>
</paths>

Aber wenn ich auf den button zum download erhalte ich diese Meldung: "Diese Datei konnten nicht abgerufen werden. Überprüfen Sie die Position oder das Netzwerk und versuchen Sie es erneut."

Wiederaufnahme:

1 - Die Datei wird heruntergeladen und gespeichert in das Verzeichnis Ordner.

2 - Die Absicht ist gestartet, aber die Datei wird nicht geöffnet.

3 - Debug-Modus geben Sie mir dies auf "neue Datei(urlString)": "urlString=" /storage/emulated/0/Download/Namen.pdf"

4 - Bei "FileProvider.getUriFromFile..." debug-Modus haben:

"uriFile = content://com.Beispiel.android.parlamentaresapp.fileprovider/Download/Namen.pdf"

Danke.

Android >> Internal Shared Storage >> Download.. Das ist nicht ein file-system-Pfad, die Sie verwenden, in Ihrem code. Bitte geben Sie den tatsächlichen vollständigen Pfad.
hier ist das komplette Beispiel Schritt für Schritt android androidwave.com/capture-image-from-camera-gallery

InformationsquelleAutor Sarara | 2017-03-29

Schreibe einen Kommentar