我正在使用 IntentService
从互联网下载文件,并在下载过程中显示一个 Notification
。下载完成后,我需要能够单击通知以在适当的应用程序中打开已下载的文件。以下是我用于此目的的代码:
Intent intent = IntentUtils.getOpenFileIntent(task.getTargetFolder()
+ File.separator + task.getFileNode().getName());
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this);
taskStackBuilder.addParentStack(MainActivity.class);
taskStackBuilder.addNextIntent(intent);
PendingIntent pi = taskStackBuilder.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pi);
这是我创建Intent
的方法:
public static Intent getOpenFileIntent(String path) {
File file = new File(path);
Uri uri = Uri.fromFile(file);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String extension = fileExt(path);
String type = mime.getMimeTypeFromExtension(extension);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, type);
return intent;
}
问题在于点击通知会关闭任何当前打开的应用程序。我只需要在当前打开的应用程序上显示应用程序选择器。我认为问题在于
TaskStackBuilder
的使用,但没有其他方法可以创建ACTION_VIEW
Intent
的PendingIntent
实例。
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,intent, PendingIntent.FLAG_CANCEL_CURRENT)
- M D