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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Call
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
auf dieIntent
mitstartActivity()
und dieFileProvider
Uri
. Ohne, dass die Aktivität, die hat keine Rechte, um auf Ihren Inhalt zuzugreifen.Ich danke Ihnen sehr. Das fehlende flag war das Problem!
vielen Dank, es funktioniert für mich, aber die empfangende app (Amaze Text-Editor) zeigt
sh: <stdin>[7]: cat: /Download/error.txt: No such file or directory
Ich schlage vor, Sie Fragen einen separaten Stack Overflow Frage, wo Sie eine Minimale, Vollständige und Überprüfbare Beispiel zeigen Sie Ihre problem.
danke @CommonsWare gerade eröffnet eine Frage, wie vorgeschlagen, stackoverflow.com/questions/48725388/...
InformationsquelleAutor CommonsWare