gpt4 book ai didi

android - 通过 MvvmCross 在 Android 上使用通知

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:55 24 4
gpt4 key购买 nike

我确实想创建一个插件来实现类似通知服务的功能。

所以我现在正在做的是这样的:

        var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
var builder = new NotificationCompat.Builder(activity.ApplicationContext)
.SetContentTitle(title)
.SetSmallIcon(Resource.Drawable.Icon)
.SetContentText(message);
var notificationManager = (NotificationManager)activity.ApplicationContext.GetSystemService(Context.NotificationService);
notificationManager.Notify(0, builder.Build());

这工作正常并且确实显示了它应该显示的通知。下一步是,我想从通知导航到我的 Activity 。这意味着在 MvvmCross 中我确实想导航到我的 ViewModel。

但是我现在如何将 ShowViewModel<...>()-Command 打包到这个通知中?这可能吗?

在 native android 上,我会创建一个 PendingIntent,它确实指向我要显示的 Activity。

有什么想法吗?暗示?小费? :-)

最佳答案

Android 上默认的 MvvmCross 演示器使用 Intent 进行导航。这些由 IMvxAndroidViewModelRequestTranslator 接口(interface)中的方法 Intent GetIntentFor(MvxViewModelRequest request) 生成。

默认情况下,这是在以下范围内实现的:MvxAndroidViewsContainer.cs#L117

    public virtual Intent GetIntentFor(MvxViewModelRequest request)
{
var viewType = GetViewType(request.ViewModelType);
if (viewType == null)
{
throw new MvxException("View Type not found for " + request.ViewModelType);
}

var converter = Mvx.Resolve<IMvxNavigationSerializer>();
var requestText = converter.Serializer.SerializeObject(request);

var intent = new Intent(_applicationContext, viewType);
intent.PutExtra(ExtrasKey, requestText);

AdjustIntentForPresentation(intent, request);

intent.AddFlags(ActivityFlags.NewTask);
return intent;
}

如果您需要为其他目的生成Intent(例如,为了继续生成PendingIntent),那么您可以Resolve 并自己调用这个接口(interface)。

    var request = MvxViewModelRequest<MyViewModel>.GetDefaultRequest();
request.PresentationValues = new Dictionary<string, string>() {
{ "life", "42" }
};
var translator = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator>();
var intent = translator.GetIntentFor(request);
var pending = PendingIntent.GetActivity (context, 0, intent, 0);

有关生成MvxViewModelRequest 对象的更多信息,另请参阅MvxNavigatingObject.cs 中重载的ShowViewModel 方法|

关于android - 通过 MvvmCross 在 Android 上使用通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com