在原生Android应用中,您可以为清单文件中的活动定义intent-filter
,当从网站或电子邮件访问特定链接(例如myprotocol://mysite.com/action/data
)时,可以打开应用。
<intent-filter>
<data android:scheme="myprotocol" android:host="mysite.com"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
当我尝试将其添加到MvvmCross应用程序中的AndroidManifest文件时,似乎只有视图被加载,而ViewModel没有链接到它。我似乎无法找到有关如何加载ViewModel和获取我的意图数据(网址的data
部分)的任何信息。
以前有人这样做过吗?
答案 0 :(得分:2)
我有一个应用程序可以响应扫描NFC标签,我也有类似的情况。
我的解决方案是在致电OnCreate
后立即在base.OnCreate(bundle)
覆盖中添加以下内容:
if (null == ViewModel)
{
//This should only happen when the Intent is not an Mvx one. I.e. when having scanned
//NFC tag. We need to load the ViewModel manually.
var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
ViewModel = (ScanViewModel) loaderService.LoadViewModel(
new MvxViewModelRequest(typeof (ScanViewModel), null, null, null), null);
}
正如评论所说,意图不是来自MvvmCross的意图。这意味着告诉MvvmCross要加载哪个ViewModel的包不存在。所以我要做的就是自己创建ViewModel。