MAUI: невозможно выполнить это действие после onSaveInstanceState при возвращении из другого приложения с помощью AppLinAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 MAUI: невозможно выполнить это действие после onSaveInstanceState при возвращении из другого приложения с помощью AppLin

Сообщение Anonymous »

В Android-приложении MAUI (8.0) мне нужно связаться с другим приложением (платёжным терминалом). Я использую URL-адреса приложений.
В MainActivity я добавил украшение Activity Exported = true, чтобы позволить вызываемому приложению перезвонить моему приложению с результатом. Эти строки были добавлены ниже:
[IntentFilter(new[] { Android.Content.Intent.ActionView },
DataScheme = "MyApp",
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable })]

Когда партнерское приложение завершает работу, оно вызывает URL-адрес MyApp://, и я могу перехватить его в жизненном цикле, определенном в MauiProgram:
lifecycle.AddAndroid(android =>
{
android.OnCreate((activity, bundle) =>
{
var action = activity.Intent?.Action;
var data = activity.Intent?.Data?.ToString();

if (action == Android.Content.Intent.ActionView && data is not null)
{
activity.Finish();
Task.Run(() => HandleAppLink(data));
}
});
});

Но в защищенном переопределении void OnCreate(Bundle Bundle) MainActivity я получаю эту ошибку: невозможно выполнить это действие после onSaveInstanceState
Стек вызовов:
at Java.Interop.JniEnvironment.InstanceMethods.CallIntMethod(JniObjectReference instance, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:line 20203
at Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeAbstractInt32Method(String encodedMember, IJavaPeerable self, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:line 492
at AndroidX.Fragment.App.BackStackRecord.Commit() in C:\a\_work\2\s\generated\androidx.fragment.fragment\obj\Release\net7.0-android\generated\src\AndroidX.Fragment.App.BackStackRecord.cs:line 141
at Microsoft.Maui.Platform.NavigationRootManager.SetContentView(IView view) in D:\a\_work\1\s\src\Core\src\Platform\Android\Navigation\NavigationRootManager.cs:line 129
at Microsoft.Maui.Platform.NavigationRootManager.Disconnect() in D:\a\_work\1\s\src\Core\src\Platform\Android\Navigation\NavigationRootManager.cs:line 113
at Microsoft.Maui.Handlers.WindowHandler.DisconnectHandler(NavigationRootManager navigationRootManager) in D:\a\_work\1\s\src\Core\src\Handlers\Window\WindowHandler.Android.cs:line 83
at Microsoft.Maui.Handlers.WindowHandler.OnDisconnectHandler(Object platformView) in D:\a\_work\1\s\src\Core\src\Handlers\Window\WindowHandler.Android.cs:line 67
at Microsoft.Maui.Handlers.ElementHandler.DisconnectHandler(Object platformView) in D:\a\_work\1\s\src\Core\src\Handlers\Element\ElementHandler.cs:line 112
at Microsoft.Maui.Handlers.ElementHandler.Microsoft.Maui.IElementHandler.DisconnectHandler() in D:\a\_work\1\s\src\Core\src\Handlers\Element\ElementHandler.cs:line 130
at Microsoft.Maui.Controls.Element.SetHandler(IElementHandler newHandler) in D:\a\_work\1\s\src\Controls\src\Core\Element\Element.cs:line 918
at Microsoft.Maui.Controls.Element.set_Handler(IElementHandler value) in D:\a\_work\1\s\src\Controls\src\Core\Element\Element.cs:line 863
at Microsoft.Maui.Platform.ElementExtensions.SetHandler(Context nativeElement, IElement element, IMauiContext context) in D:\a\_work\1\s\src\Core\src\Platform\ElementExtensions.cs:line 156
at Microsoft.Maui.Platform.ElementExtensions.SetWindowHandler(Activity platformWindow, IWindow window, IMauiContext context) in D:\a\_work\1\s\src\Core\src\Platform\ElementExtensions.cs:line 166
at Microsoft.Maui.Platform.ApplicationExtensions.CreatePlatformWindow(Activity activity, IApplication application, Bundle savedInstanceState) in D:\a\_work\1\s\src\Core\src\Platform\Android\ApplicationExtensions.cs:line 48
at Microsoft.Maui.MauiAppCompatActivity.OnCreate(Bundle savedInstanceState) in D:\a\_work\1\s\src\Core\src\Platform\Android\MauiAppCompatActivity.cs:line 35
at MyApp.MainActivity.OnCreate(Bundle bundle) in M:\MyApp\Mobile\MyApp\MyApp\MyApp\Platforms\Android\MainActivity.cs:line 16
at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_(IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.App.Activity.cs:line 3082
at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V(_JniMarshal_PPL_V callback, IntPtr jnienv, IntPtr klazz, IntPtr p0) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 125
--- End of managed Java.Lang.IllegalStateException stack trace ---
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1632)
at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1672)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:341)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:306)
at crc64b752d7d37e2796a7.MainActivity.n_onCreate(Native Method)
at crc64b752d7d37e2796a7.MainActivity.onCreate(MainActivity.java:39)
at android.app.Activity.performCreate(Activity.java:8944)
at android.app.Activity.performCreate(Activity.java:8913)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4146)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4322)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8893)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)


Подробнее здесь: https://stackoverflow.com/questions/783 ... ng-back-fr
Ответить

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

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

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

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

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