我正在尝试使用我的Xamarin Android应用程序打开从服务器下载的PDF文件。在下载时,我使用NotificationCompat.Builder在系统托盘中显示进度通知,这很有效。然后,一旦下载完成,我会显示另一个通知(替换进度),说它已完成,我正在尝试对其应用意图,因此它可以启动设备的默认PDF查看器。
我正在这样处理:
var notificationService = (NotificationManager)GetSystemService(NotificationService);
var builder = new NotificationCompat.Builder(ApplicationContext);
builder.SetContentTitle("Download PDF");
builder.SetContentText("Downloading...");
builder.SetProgress(100, 0, true);
builder.SetSmallIcon(Resource.Mipmap.icon);
notificationService.Notify(1337, builder.Build());
Task.Run(async () =>
{
await MyAsyncPdfDownloadMethod(filePath);
RunOnUiThread(() => //apparently not necessary, same result with and without it
{
builder.SetContentText("Download completed");
builder.SetProgress(0, 0, false);
var notificationIntent = new Intent(Intent.ActionView, Android.Net.Uri.Parse(filePath));
notificationIntent.SetDataAndType(Android.Net.Uri.Parse(filePath), "application/pdf");
notificationIntent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop | ActivityFlags.NewTask);
builder.SetContentIntent(PendingIntent.GetActivity(this, 0, notificationIntent, 0));
builder.SetAutoCancel(true);
notificationService.Notify(1337, builder.Build());
});
});
当通知出现时,我点击它,它就会消失,这是由于SetAutoCancel的预期行为。但仍然,它关闭系统托盘,然后..没有。无论我还在我的应用程序或主屏幕上,都没有。
我进入了保存文件的下载文件夹,它就在这里,我点击它就可以正确打开它。
我可能错过了一些东西,但我不知道它是什么。有线索吗?