mvvmcross - 如何使用 MvvMCross 在运行时检测平台?

标签 mvvmcross

我希望用户能够将有关我的应用的反馈发送到某个地址。使用电子邮件插件,这一切都很好,但在电子邮件正文中,我想预先填充有关他们正在运行的应用程序的一些信息。

理想情况下,我想要设备、操作系统、屏幕分辨率、方向等,但现在我只满足于操作系统

最佳答案

这感觉很奇怪,但我不记得有人要求将此作为一项功能,而且我认为也没有人为此制作过插件。

考虑到您 future 的需求(屏幕分辨率、方向等),最简单的方法可能是在您的核心项目中定义一个界面:

 public enum OS
 {
    Droid, Touch, WinPhone, WinStore, Mac, Wpf
 }

 public IDetails
 {
     OS OS { get; }
     // whatever else you need
 }

然后,您可以在每个 UI 项目中注册此实现 - 例如在 WinPhone 的 Setup 中,添加:

 protected override void InitializeLastChance()
 {
     base. Setup.InitializeLastChance();
     Mvx.RegisterSingleton<IDetails>(new WindowsPhoneDetails());
 }

地点:

 public class WindowsPhoneDetails : IDetails
 {
     public OS OS { get { return OS.WinPhone; } }
 }

有关此方法的更多信息,请参阅 https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup#wiki-registering-platform-specific-business-objects-in-setupinitializefirstchance-and-setupinitializelastchance

(具体针对屏幕尺寸,另请参阅 https://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/FractalGen 中的 IDisplayDimensionsService)

关于mvvmcross - 如何使用 MvvMCross 在运行时检测平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122318/

相关文章:

mobile - MvvmCross:另一个 ViewModel 场景中的 ViewModel

ios - 如何在 Xamarin iOS 中使用 MvvmCross 将 UITableView 绑定(bind)到 List<string>

android - DialogFragment/FragmentManager 在旋转时崩溃(使用 MVVMCross):IllegalStateException: Can not perform this action after onSaveInstanceState

c# - 在导航时再次调用 ViewModel 的构造函数,因此再次订阅 Messenger 订阅

c# - MvvmCross 可移植类库 - System.Net.ServicePointManager

android - MVVMCross:如何制作无限 ScrollView 并向下推刷新 View ?

data-binding - MvvmCross AttributedText Converter 数据绑定(bind)生成空指针警告,但标签呈现正常——有什么问题吗?

binding - Mvvmcross MvxSimpleTableViewSource 绑定(bind)

c# - TabHost 在 CreateIntentFor<> 中传递参数

mvvm - 命名空间 MvvmCross.Forms 中不存在类型或命名空间平台