ZIP ファイルをデバイスにダウンロードし、ユーザーに通知を表示する WebView があります。私のエミュレーターにはファイルを開くことができるファイル アプリがありますが、ユーザーは通知をタップしてファイルを開くことができるはずです。理想的には、ファイル アプリは 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());
}
私は2つのインテントを試しました。これは何もしません:
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;