微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有自定义URI方案打开的Xamarin表单应用程序崩溃

如何解决没有自定义URI方案打开的Xamarin表单应用程序崩溃

我正在尝试通过发送到电子邮件的URI链接打开Xamarin表单应用。我已经在“ AndroidManifest.xml”中注册一个URI方案,该方案转到OpenFromURIActivity.cs,然后它启动MainActivity。仅当该应用程序的一个实例已经打开并运行时,该代码才能正常工作,否则它将无法正常工作并在mainactivity中崩溃。这是我在MainActivity.cs中的代码。我检查“ intent.data”(URI数据)是否为空,然后继续加载app.cs,否则我将加载另一个名为“ AppOpenURI”的应用程序类。我的怀疑是它崩溃了,因为bundle在mainactivity中为空?请告知。

enter image description here

public class OpenFromURIActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            try
            {
                base.OnCreate(savedInstanceState);
                var mainActivityIntent = new Intent(Application.Context,typeof(MainActivity));
                mainActivityIntent.AddFlags(ActivityFlags.NewTask);
                mainActivityIntent.SetData(Intent.Data);
                StartActivity(mainActivityIntent);
            }
            catch (Exception ex)
            {
                var properties = new Dictionary<string,string> {
                { "OnCreate","OpenFromURIActivity" }
                };
                Crashes.Trackerror(ex,properties);
            }
        }      
    }

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            FFImageLoading.Forms.Platform.CachedImageRenderer.Init(enableFastRenderer: false);
            Xamarin.Essentials.Platform.Init(this,savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this,savedInstanceState);
            if (Intent.Data == null)
            {
                LoadApplication(new App(new AndroidInitializer()));
            }
            else
            {
                var appFromUri = new AppOpenURI(Intent.Data.EncodedAuthority);
                LoadApplication(appFromUri);
            }    
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。