【发布时间】:2017-06-12 15:51:56
【问题描述】:
我目前正在做一个项目,我在设备上收到推送通知,当点击通知时,它应该会打开一个特定页面。
我在 Android 5.1 上尝试过,但是当我点击通知时,它首先打开页面,然后立即打开一个空白页面,没有任何导航栏,我不明白为什么......
这是我的代码:
当我在 android 上收到消息时,我执行以下操作:
Intent intent = new Intent(this, typeof(MainActivity));
intent.PutExtra("key", "message");
PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
Notification notif = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.icon)
.SetContentTitle("Alert")
.SetContentText("alert message")
.SetAutoCancel(true)
.SetDefaults(NotificationDefaults.Sound | NotificationDefaults.Vibrate)
.SetContentIntent(pendingIntent)
.SetPriority((int)NotificationPriority.High)
.Build();
NotificationManager notificationManager = (NotificationManager)GetSystemService(Context.NotificationService);
notificationManager.Notify(0, notif);
录制完成后,它会打开 MainActivity,它执行以下操作:
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
if (app == null)
app = new App();
LoadApplication(app);
// If the user tapped a notification
if (Intent.Extras != null)
{
Data data = JsonConvert.DeserializeObject<Data>(Intent.Extras.GetString("key"));
MessagingCenter.Send<Data>(data, "Show data");
}
}
最后我有一个 DataPage(设置为应用程序的 MainPage,在 NavigationPage 内):
public DataPage()
{
MessagingCenter.Subscribe<Data>(this, "Show data", (sender) =>
{
await Navigation.PushAsync(new DataDetail(sender));
});
}
我真的不明白为什么这不能正常工作...... 特别是如果我这样做了
await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new DataPage(data)));
并在 DataPage 中创建第二个构造函数:
DataPage(Data data)
{
await Navigation.PushAsync(new DataDetail(data));
}
它工作正常。 (但我不喜欢这个,看起来很……不好看)
【问题讨论】:
标签: android xamarin xamarin.forms navigation