.net MAUI Android синхронно вызывает StartActivityForResult и ждет вызова OnActivityResultC#

Место общения программистов C#
Ответить
Anonymous
 .net MAUI Android синхронно вызывает StartActivityForResult и ждет вызова OnActivityResult

Сообщение Anonymous »


из моего приложения мне нужно создать новое действие для внешнего приложения, чтобы получить результат в OnActivityResult. Он хорошо работает с StartActivityForResult, затем OnActivityResult вызывается после завершения обработки externalActivity... Таким образом, код вызывающего объекта уже завершен...

Поэтому я хотел бы вызвать родительский метод в моей модели представления, который выполняет код StartActivityForResult в контексте async/await, чтобы иметь линейный бизнес-код без использования обратного вызова в OnActivityResult...

На самом деле

публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { androidService.CreateExternalIntent() => этот метод вызывает внутри StartActivityForResult, затем работающий поток покидает и вызывается StartActivityForResult. Работает.... } } Но я хотел бы выполнить метод CreateExternalIntent в контексте ожидания, чтобы получить StartActivityForResult вот так

публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { варotherActivityResult = ждут androidService.CreateExternalIntent(); } } общедоступный класс MainActivity: MainApplication { публичная задача CreateNewActivity() { StartActivityForResult(planeteMonetiqueIntent, транзакция.InteropMessageId); AutoResetEvent.WaitOne(); return Task.FromResult(_otherActivityResult); } } защищенное переопределение void OnActivityResult(int requestCode, Result resultCode, Android.Content.Intent намерение) { Пакет Bundle = Intent.Extras; _otherActivityResult = GetDataFromBundle(); АвтоСбросСобытия.Установить(); } Я выполнил этот процесс для синхронизации с USB-устройством для получения процесса Arduino, и мой код вызывающего абонента работает хорошо с ожиданием...

Я видел эту тему Синхронный startActivityForResult — ожидание завершения действия

Я не могу использовать Инструментарий Инструментарий = новый Инструментарий(); Instrumentation.AddMonitor(planeteMonetiqueIntentFilter, null, false);

instrumentation.StartActivitySync(planeteMonetiqueIntent);

Этот код вызвал ошибку, невозможно выполнить этот код в основном потоке....

Я устал объяснять свою проблему как можно проще...

Спасибо.

Жюльен
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»