如何让我的.net maui应用程序显示在设备的“共享”对话框中?

35g0bw71  于 2023-11-20  发布在  .NET
关注(0)|答案(2)|浏览(159)

通常,应用程序有一个“分享”按钮.当使用其他应用程序在我的设备上有“分享”按钮(例如Web浏览器,新闻应用程序等),当你点击这个按钮,它会显示你的应用程序列表共享的URL.
例如,我可以在Chrome中导航到一个页面,点击共享,然后我可以选择我的电子邮件应用程序来共享URL。
关于如何在毛伊岛实现这一点,有什么建议吗?我希望我的应用程序出现在共享对话框中。
谢谢
P.S.为之前糟糕的措辞道歉;)

mbjcgjjk

mbjcgjjk1#

为此,MAUI提供了IShare接口,只需使用RequestAsync方法即可显示要共享的应用列表。

await Share.Default.RequestAsync(new ShareTextRequest
{
    Uri = "https://test.com",
    Title = "Share Web Link"
});

字符串
更多信息可以在这里找到:https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/data/share?tabs=android

qij5mzcb

qij5mzcb2#

以下是适用于我的Android平台。我可以通过两种方式之一启动我的应用程序:

导航到https://www.ivsoftware.net/interceptor-test.html并单击按钮:


的数据

在此网页或任何其他网页中,单击Google Chrome共享图标:



下面是Android Intent Filter代码。

using Android.App;
using Android.Content;
using Android.OS;
using url_interceptor;

namespace url_interceptor.Platforms.Android
{
    [Activity(Label = "UrlInterceptorActivity", Exported =true)]
    [IntentFilter(
        new[] { Intent.ActionView },
        Categories = new[]
        { 
            Intent.CategoryDefault, 
            Intent.CategoryBrowsable 
        },
        DataSchemes = new[] 
        {
            "net.ivsoftware.demo" 
        })]

    [IntentFilter(
        new[]
        { Intent.ActionSend },
        Categories = new[]
        {
            Intent.CategoryDefault,
        },
        DataMimeType = "text/plain"
    )]
    public class UrlInterceptorActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            Intent intent = Intent;
            var uri = intent.Data;
            StartMainActivity();
            Task
                .Delay(TimeSpan.FromSeconds(0.5))
                .GetAwaiter()
                .OnCompleted(() =>
                {
                    switch (this.Intent.Action)
                    {
                        case Intent.ActionView:
                            if (intent.Action == Intent.ActionView)
                            {
                                var uri = intent.Data;
                                App.Current.MainPage.DisplayAlert("Interceptor", "Deep Link Button", "OK");
                            }
                            break;
                        case Intent.ActionSend:
                            var link = intent.GetStringExtra(Intent.ExtraText);
                            App.Current.MainPage.DisplayAlert("Interceptor", $"Shared Link: '{link}'", "OK");
                            break;
                    }
                });
            Finish(); 
        }

        private void StartMainActivity()
        {
            Intent mainActivityIntent = new Intent(this, typeof(MainActivity));
            StartActivity(mainActivityIntent);
        }
    }
}

字符串
iOS也有类似的拦截URL的机制,但我还没有测试过这个特定的动作。

相关问题