【问题标题】:Xamarin Android: how to share a string via text/email/Whatsapp/Facebook/WeChatXamarin Android:如何通过文本/电子邮件/Whatsapp/Facebook/WeChat 共享字符串
【发布时间】:2017-03-23 21:37:58
【问题描述】:

我的适用于 Android 的 Xamarin 应用程序读取一些本地数据,处理它们并将结果作为字符串返回,例如: “当前目标是 X,请增加 Y 的力量”。 我想在我的应用程序中有一个按钮,它可以打开我们在许多应用程序中看到的常用 sshare 命令,并且可以说内容将与您手机上的应用程序共享。 例如,如果我使用微信甚至 WhatsApp,我可以单击该图标并选择联系人以共享我的字符串。 我怎样才能在 Xamarin 中实现这一点。特别是,我需要与微信、WhatsApp 和 Facebook 互动。

【问题讨论】:

    标签: c# xamarin xamarin.android social-networking


    【解决方案1】:

    我想在我的应用程序中有一个按钮,它可以打开我们在许多应用程序中看到的常用 sshare 命令,并且可以说内容将与您手机上的应用程序共享。

    Android可以参考官方文档:Sending Simple Data to Other Apps,在Xamarin.Android中类似,例如:

    Intent intentsend = new Intent();
    intentsend.SetAction(Intent.ActionSend);
    intentsend.PutExtra(Intent.ExtraText, "Current target is X, please increase power to Y");
    intentsend.SetType("text/plain");
    StartActivity(intentsend);
    

    【讨论】:

    • 谢谢。这似乎按预期工作。唯一的问题是,一旦您第一次分享,例如选择 WhatsApp,该应用程序将成为未来任何进一步按钮单击的默认应用程序。有没有一种简单的方法可以让对话框每次都询问我要使用什么应用进行分享?
    • @opt,非常抱歉回复晚了。我想你可以在PackageManager 中使用clearPackagePreferredActivities 来解决这个问题。
    • @opt 我这样做是为了确保每次都显示选择应用程序的对话框。 StartActivity(Intent.CreateChooser(intentsend, "Share Via"));
    【解决方案2】:

    我个人没有尝试过,因为到目前为止我不需要它。然而,我发现了这个Xamarin.Social 包,可能分享给你很有帮助。这是他们 GitHub 存储库中的the example。我将附上他们示例中的代码 sn-p,以便您在这里阅读更容易。

    //taken from https://github.com/xamarin/Xamarin.Social/blob/master/samples/Xamarin.Social.Sample.Android/MainActivity.cs 
    void Share (Service service, Button shareButton)
    {
        Item item = new Item {
            Text = "I'm sharing great things using Xamarin!",
            Links = new List<Uri> {
            new Uri ("http://xamarin.com"),
            },
        };
    
        Intent intent = service.GetShareUI (this, item, shareResult => {
            shareButton.Text = service.Title + " shared: " + shareResult;
        });
    
        StartActivity (intent);
    }
    
    public override void OnCreate(Bundle bundle)
    {
        ...
        facebookButton.Click += (sender, args) =>
        {
            try
            {
                Share (Facebook, facebookButton); 
            }
            catch (Exception ex)
            {
                ShowMessage("Facebook: " + ex.Message);
            }
        };
        ...
    }
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回复。我看到了 Xamarin.Social 但它不支持我现在需要的所有应用程序,而 Grace Feng 提出的解决方案似乎适用于我手机上的任何应用程序。但即使对于 Facebook,您是否认为使用 Xamarin.Social 比其他提议的解决方案有任何附加价值?再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2011-12-19
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多