Download Manager obtiene el siguiente error en dispositivos con Android 10. La versión de destino es 29.
Agregué una android:requestLegacyExternalStorage="true"
etiqueta al manifiesto, pero no funcionó.
java.lang.SecurityException: ruta / almacenamiento / emulado / 0 / Contenido / Awesome App.apk no admitidos
Aqui esta el codigo
public static void startDownload(Context context, String url, String token, String subPath) {
DownloadManager.Request request;
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(url); // A url to download a file
try {
request = new DownloadManager.Request(uri);
request.addRequestHeader("X-Auth-Token", token);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return;
}
request.setVisibleInDownloadsUi(true);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
try {
File downloadFileDir = new File(Environment
.getExternalStorageDirectory().getAbsolutePath() + "/Contents");
if (downloadFileDir != null) {
if (!downloadFileDir.exists()) {
downloadFileDir.mkdirs();
}
File file = new File(downloadFileDir.getAbsolutePath() + File.separator + subPath);
// subPath is name of the file to download. e.g. Awesome App.apk
if (file.exists()) {
file.delete();
}
Uri localUri = Uri.fromFile(file);
request.setDestinationUri(localUri);
if (localUri != null) {
request.setMimeType(MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(localUri.toString())));
}
}
} catch (SecurityException e) {
e.printStackTrace();
}
request.setTitle(subPath);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
try {
manager.enqueue(request);
} catch (SecurityException e) {
e.printStackTrace();
//Got exception here
}
}
/ storage / emulated / 0 / Contents / Awesome App.apk
En un dispositivo con Android 10, el DownloadManager no se descargará en sus propios directorios en el almacenamiento externo.
Debe utilizar uno de los directorios públicos ya disponibles como Documento, Descarga, DCIM, Música, etc.
Entonces puedes dejar descargar a
/storage/emulated/0/Music/Contents/Awesome App.apk
No es necesario que cree su subdirectorio usted mismo, ya que el administrador de descargas lo hará.
Su aplicación no necesita ningún permiso para permitir que el administrador de descargas ejecute su tarea.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras