Откройте загруженный ZIP-файл из уведомления Android - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть WebView, который загружает ZIP-файл на устройство и отображает уведомление для пользователя.В моем эмуляторе есть приложение «Файлы», которое может открыть файл, но пользователь должен иметь возможность нажать на уведомление и открыть файл.В идеале приложение «Файлы» должно открывать его, поскольку оно может обрабатывать ZIP-файлы, но если нет ничего, что могло бы открыть его, я бы хотел, чтобы пользователю была предоставлена ​​ссылка на магазин Play, чтобы загрузить что-нибудь, что может.

Вот код, который создает уведомление:

Intent intent = SSLauncher.getOpenFileIntent(context, dwldsPath);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        NotificationCompat.Builder b = new NotificationCompat.Builder(context, "4565")
                .setDefaults(NotificationCompat.DEFAULT_ALL)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.mipmap.stat_sys_download_anim0)
                .setContentTitle("File Download")
                .setContentText(dwldsPath.getName())
                .setContentIntent(pendingIntent)
                .setAutoCancel(true)
                .setPriority(NotificationCompat.PRIORITY_DEFAULT);
        nm = (NotificationManager) this.context.getSystemService(Context.NOTIFICATION_SERVICE);
        if(nm != null) {
            nm.notify(notificationId, b.build());
        }

Я попробовал два Intents.Этот ничего не делает:

Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileprovider", file);
    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String type = mime.getMimeTypeFromExtension("zip");
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setDataAndType(uri, type);
    return intent;

А этот дает мне сообщение «Ни одно приложение не может выполнить это действие»:

String type = "application/zip";

    Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileprovider", file);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setDataAndType(uri, type);

    Intent chooser = Intent.createChooser(intent, "open file with");

    return chooser;
...