Android Share 方法不分享文字和图片,只分享图片 - Android

Posted

技术标签:

【中文标题】Android Share 方法不分享文字和图片,只分享图片 - Android【英文标题】:Android Share method does not share text and image, only the image - Android 【发布时间】:2021-12-25 13:55:18 【问题描述】:

我有一种方法可以通过 SMS、WhatsApp、Email、Fb 等共享图像,调用它时会传递一个 URL。

该方法从共享 URL 下载图像并准备发送图像(使用Xamarin.Essentials.Share)。

问题是我将文本与图像一起传递(需要提供一些上下文)作为方法属性的一部分,但是在共享时文本没有显示给我,只有图像单独显示,并且它不能很好地为我服务,因为它会在没有任何上下文或信息的情况下发送它。

关于如何在 Android 上传递图像和文本还有其他想法吗?

也许是某种自动复制然后将一些文本粘贴到键盘剪贴板?

图文法:

public async Task DownloadImageAndShareIt(string URL)
        
            try
            
                string localPath = "";

                var webClient = new WebClient();
                webClient.DownloadDataCompleted += (s, e) =>
                
                    byte[] bytes = new byte[e.Result.Length];
                    bytes = e.Result; // get the downloaded data
                    string documentsPath = android.OS.Environment.GetExternalStoragePublicDirectory
                    (Android.OS.Environment.DirectoryPictures).AbsolutePath;

                    var partedURL = URL.Split('/');
                    string localFilename = partedURL[partedURL.Length - 1];
                    localFilename = "MyAPP" + localFilename;
                    localPath = System.IO.Path.Combine(documentsPath, localFilename);
                    File.WriteAllBytes(localPath, bytes); // writes to local storage

                    MediaScannerConnection.ScanFile(Application.Context, new string[]  localPath , null, null);
                ;
                var url = new Uri(URL);
                webClient.DownloadDataAsync(url);

                var partedURL = URL.Split('/');
                string localFilename = partedURL[partedURL.Length - 1];
                localFilename = "MyAPP" + localFilename;
                string documentsPath = Android.OS.Environment.GetExternalStoragePublicDirectory
                    (Android.OS.Environment.DirectoryPictures).AbsolutePath;
                localPath = System.IO.Path.Combine(documentsPath, localFilename);

                //Done.



            
            catch (Exception Ex)
            
                string LineErrorNumber = "Error line: " + Ex.StackTrace.Substring(Ex.StackTrace.Length - 7, 7) + "\r\n" + "Error: " + Ex.Message;
            
            finally
            
                await Share.RequestAsync(new ShareFileRequest
                
                    Title = **"Delicate info from MyAPP"**,
                    File = new ShareFile(localPath)
                );
            
        

需要注意的是,如果我使用另一种仅用于文本的共享方法,那么如果我共享它没有问题。

纯文本方法:

private async Task ShareText(string Tipo, string Titulo, string ContenidoaCompartir)
        
            try
            
                await Share.RequestAsync(new ShareTextRequest
                
                    Uri = "Delicate info from MyAPP",
                    Title = Titulo, 
                    Subject = (Tipo + " de " + Titulo).ToString(),
                    Text = "MyApp - " + Tipo + " de " + Titulo + ":" + System.Environment.NewLine + ContenidoaCompartir + System.Environment.NewLine
                );
            
            catch (Exception Ex)
            
                string LineErrorNumber = "Error line: " + Ex.StackTrace.Substring(Ex.StackTrace.Length - 7, 7) + "\r\n" + "Error: " + Ex.Message; Crashes.TrackError(Ex);
            
        

【问题讨论】:

您是否尝试设置一些断点来检查值并查看方法的执行程度 嘿阿德兰。是的,我做到了,我发现了这一点:它没有显示参数“标题”,因为 SMS 或 WhatsApp 文本没有“标题”。它适用于纯文本方法,因为它具有“文本”参数以及 SMS。话虽如此,我仍然需要找到一种方法来做到这一点。 你见过这个吗? ***.com/questions/42900244/… @AdrainZhu-MSFT 不是我需要的。结果与Text方法基本相同,只是在text参数中传递URL。 这里是关于通过whatsapp ***.com/questions/23077338/…分享文本和图像的某事 【参考方案1】:

您可以查看下面的问题,该问题显示如何通过whatsapp Share image and text through Whatsapp or Facebook分享文本和图像

【讨论】:

以上是关于Android Share 方法不分享文字和图片,只分享图片 - Android的主要内容,如果未能解决你的问题,请参考以下文章

Android 调用系统分享文字图片文件,可直达微信朋友圈QQQQ空间微博

uniapp分享功能-系统分享

uniapp分享功能-系统分享

android 调用系统分享图片及文字

对友盟分享(Umeng-Share)的功能封装

Android文字图片无法居中对齐的三个解决方法