.net MAUI Android同步调用StartActivityForResult并等待OnActivityResult被调用

bwntbbo3  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(166)

从我的应用程序,我需要创建一个新的活动到一个外部应用程序,以检索结果在OnActivityResult。它与StartActivityForResult工作得很好,然后OnActivityResult是引发后,externalActivity完成处理...所以调用者代码已经完成...
因此,我想调用viewModel中的父方法,该方法在异步/等待上下文中执行StartActivityForResult代码,以使业务代码线性化,而无需在OnActivityResult中使用回调...
实际

  1. public class MyViewModel
  2. {
  3. public async OnCallExternalIntent()
  4. {
  5. androidService.CreateExternalIntent() => this method calls inside StartActivityForResult then running thread is leaving and StartActivityForResult is raised. It's working....
  6. }
  7. }

字符串
但我想在等待上下文中执行方法CreateExternalIntent,以检索类似的StartActivityForResult

  1. public class MyViewModel
  2. {
  3. public async OnCallExternalIntent()
  4. {
  5. var otherActivityResult = await androidService.CreateExternalIntent();
  6. }
  7. }
  8. public class MainActivity : MainApplication
  9. {
  10. public Task CreateNewActivity()
  11. {
  12. StartActivityForResult(planeteMonetiqueIntent, transaction.InteropMessageId);
  13. AutoResetEvent.WaitOne();
  14. return Task.FromResult(_otherActivityResult);
  15. }
  16. }
  17. protected override void OnActivityResult(int requestCode, Result resultCode, Android.Content.Intent intent)
  18. {
  19. Bundle bundle = intent.Extras;
  20. _otherActivityResult = GetDataFromBundle();
  21. AutoResetEvent.Set();
  22. }


我做了这个过程,以同步与USB设备检索Arduino过程和我的调用程序代码是工作良好,等待.
我看过这个主题Synchronous startActivityForResult - Waiting for Activity to Complete
我无法使用检测检测= new检测();检测.AddMonitor(planeteMonetiqueIntentFilter,null,false);
启动活动同步(planeteMonetiqueIntent);
此代码引发错误,无法在主线程中执行此代码....
我不想把我的问题解释得尽可能简单...
谢谢
Julien

xdnvmnnf

xdnvmnnf1#

在视图模型级别使用autoREsetEvent,它正在工作

相关问题