In meiner Android App. Wenn jemand versucht, eine Datei herunterzuladen, sollte er nach einer Speicherberechtigung fragen. Falls er genehmigt wird, sollte er mit dem Herunterladen der Datei beginnen. Nächste Zeit, wenn die Berechtigung bereits erteilt wurde, starten Sie einfach einen neuen Download. hier ist der Teil meines Codes ...Herunterladen von Dateien und fragen nach Storge Erlaubnis in Android
public void downloadFile(String url) {
Uri source = Uri.parse(url);
// Make a new request pointing to the download url
DownloadManager.Request request = new DownloadManager.Request(source);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(url);
String fileName = URLUtil.guessFileName(url, null, fileExtension);
// save the file in the "Downloads" folder of SDCARD
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("?dl=1")) {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
downloadFile(url);
} else {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_EXTERNAL_STORAGE);
}
return true;
}
Das Problem mit diesem Code ist:
Wenn der Benutzer die Erlaubnis App abstürzt verweigern.
Wenn der Benutzer die Erlaubnis zum ersten Mal erteilt, startet der Download nicht sofort ... der Benutzer muss erneut auf den Download-Link klicken.
** Es ist nicht perfekt ** ist keine Frage, die beantwortet werden kann. Erwähnen Sie das Fehler/nicht erforderliche Verhalten zusammen mit dem Logcat, wenn es da ist. –
Hallo, ich habe die Frage aktualisiert. Vielen Dank. – baalal
Überprüfen Sie dies für die Erlaubnis fragen: developer.android.com/training/permissions/requesting.html –