DownloadManager lanza SecurityException en Android Q

Perihan Mirkelam

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
    }
}
blackapps

/ 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

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

DownloadManager lanza SecurityException en Android Q

DownloadManager lanza IllegalStateException o SecurityException en el emulador de Android 11

DownloadManager.addCompletedDownload () obsoleto en Android Q

Android Q. FileChooser SecurityException

DownloadManager lance IllegalStateException ou SecurityException sur l'émulateur Android 11

Mi aplicación sigue fallando en la versión de Android 9 y lanza java.lang.SecurityException

SecurityException en Android Q para acceder a ExternalStorage con ACTION_OPEN_DOCUMENT_TREE

Android DownloadManager no funciona en algunas circunstancias

¿Cuándo getClassLoader () de Class lanza SecurityException?

CustomTabsIntent launchUrl lanza SecurityException - Permission Denial

Cobertura lanza ClassNotFoundException en un proyecto de Android

Android: lanza directamente la actividad / fragmento que está en desarrollo

HttpURLConnection de Android lanza EOFException en las solicitudes HEAD

¿Por qué Android lanza varias instancias en singleTask o singleInstance?

Android Studio 2.0 lanza APK en otro dispositivo

Android: lanza directamente la actividad / fragmento que está en desarrollo

SecurityException al acceder a imágenes en Android 9

SecurityException al acceder a imágenes en Android 9

DownloadManager de Android con gRPC

¿Funciona DownloadManager en Targettapi 30?

HttpClient.SendAsync lanza ObjectDisposedException en Xamarin.Forms Android pero no en UWP

Невозможно динамически изменить имя загруженного файла в классе DownloadManager

Cómo descargar archivos múltiples (URL de imagen / video) por DownloadManager en Android

Android Things onTouch no lanza GPIO

Hibernate lanza NullPointerException en EntityVerifyVersionProcess

Downcasting en Java lanza ClassCastException

Lanza jugadores en combinaciones únicas

Unity lanza Rigidbody en ángulo

java.net.SocketTimeoutException solo se lanza en algunos dispositivos Android

TOP Lista

CalienteEtiquetas

Archivo