【问题标题】:Why the application closes when using xamarin essentials filepicker?为什么使用 xamarin Essentials 文件选择器时应用程序会关闭?
【发布时间】:2021-01-30 20:05:40
【问题描述】:

当我尝试使用 Xamarin.Essentials 的 FilePicker 类时,我的应用程序关闭且未引发任何异常。

我做了什么:

补充说: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

还有代码:

async Task<FileResult> PickAndShow(PickOptions options)
{
    try
    {
        var result = await FilePicker.PickAsync();
        if (result != null)
        {
            Text = $"File Name: {result.FileName}";
            if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
                result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
            {
                var stream = await result.OpenReadAsync();
                Image = ImageSource.FromStream(() => stream);
            }
        }
    }
    catch (Exception ex)
    {
        // The user canceled or something went wrong
    }
}

我正在使用 VS for MacOS。

关闭应用的视频: https://drive.google.com/file/d/1H1488amryi_p7mkg7JdmhcGAE569KON4/view?usp=sharing

请帮我看看我错过了什么?

编辑:

发生错误的行 var result = await FilePicker.PickAsync();

例外:

不抛出异常;

应用程序退出:

[Mono] 请求加载 Xamarin.Essentials.dll 的引用 5(共 8 个) [Mono] 加载 Xamarin.Essentials.dll asmctx DEFAULT 的参考 5,寻找 System.Core,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e [单声道] 程序集参考 addref Xamarin.Essentials[0x7ddc93de80] -> System.Core[0x7d850f7880]:10 【编舞】跳过711帧!应用程序可能在其主线程上做了太多工作。 [OpenGLRenderer] 戴维!持续时间=12935ms;标志= 0,IntendedVsync = 24578200518089,垂直同步= 24591127790687,OldestInputEvent = 9223372036854775807,NewestInputEvent = 0,HandleInputStart = 24591131789208,AnimationStart = 24591131799939,PerformTraversalsStart = 24591132369131,DrawStart = 24591132532323,SyncQueued = 24591132572054,SyncStart = 24591133134246,IssueDrawCommandsStart = 24591133217554,SwapBuffers = 24591134886554,FrameCompleted=24591136679054,DequeueBufferDuration=219000,QueueBufferDuration=280000, [mali_winsys] EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBolean) 返回 0x3000 [libEGL] EGLNativeWindowType 0x7de100a210 断开连接失败 [Mono] 请求加载 Xamarin.Forms.Platform.Android.dll 的引用 12(共 22 个) [Mono] 加载 Xamarin.Forms.Platform.Android.dll asmctx DEFAULT 的引用 12,寻找 System.Runtime.Serialization,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e [单声道] 程序集参考 addref Xamarin.Forms.Platform.Android[0x7d852aa080] -> System.Runtime.Serialization[0x7d77336a00]: 3 [Mono] 请求加载 Xamarin.Forms.Platform.Android.dll 的引用 21(共 22 个) [Mono] 加载 Xamarin.Forms.Platform.Android.dll asmctx DEFAULT 的引用 21,寻找 System.Xml,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e [单声道] 程序集参考地址 Xamarin.Forms.Platform.Android[0x7d852aa080] -> System.Xml[0x7d7769b100]:6 [libEGL] EGLNativeWindowType 0x7d5d049310 断开连接失败

A设备日志:

Image Log

【问题讨论】:

  • 哪一行导致异常?您是否检查过设备日志和 VS 输出窗口是否有任何相关消息?
  • 您可以检查应用程序输出以获取详细信息,我们将需要这些信息来诊断问题。此外,您可以放置​​一个“异常捕获点”来准确找出引发异常的原因和位置
  • 嗨,谢谢 Jason 和 Saamer。用信息编辑问题。给您带来的不便,敬请见谅
  • @JoséDonizeteOliveiraJunior 您好,您使用最新版本的 Xamarin Essentials 进行测试吗?
  • 你好蒋小弟,你好,是所有更新的插件。

标签: xamarin filepicker xamarin.essentials


【解决方案1】:

感谢大家,并为给您带来的不便深表歉意。罪魁祸首是我的不良行为。没有例外,因为真的没有。问题是当您打开文件时应用程序在后台启动,在我的代码中我有:

    public static void Background()
    {
        activity.MoveTaskToBack(true);
    } 

我忘记了。我在另一种情况下仍然需要这个,所以我这样解决:

    public static void Background()
    {
        if (App.Current.importClicked) App.Current.importClicked = false;
        else activity.MoveTaskToBack(true);
    } 

再次道歉。

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 2019-11-27
    • 2019-04-13
    • 1970-01-01
    • 2020-03-26
    • 2017-10-01
    • 2019-08-05
    • 2011-04-03
    相关资源
    最近更新 更多