我已经创建了一个Xamarin Forms(PCL)解决方案,目前我专注于Android项目 . 我正在尝试使用依赖服务实现图像共享 . 图像位于Android项目的drawable文件夹中 . 但是,每次运行下面的代码时,应用程序都会崩溃:发生未处理的异常 . 我检查了输出日志,但没有什么突出的 . 是否有人能够密切关注我的代码并告诉我它是否有错误?
非常感谢
Interface:
public interface IShare
{
void Share(ImageSource imageSource);
}
Xaml:
<ContentPage.Content>
<Image x:Name="LogoImage" Source="icon.png"/>
</ContentPage.Content>
Code-Behind:
private void Action_Clicked(object sender, EventArgs e)
{
DependencyService.Get<IShare>().Share(LogoImage.Source);
}
ShareClass (in Android project):
[assembly: Dependency(typeof(ShareClass))]
namespace MyProject.Droid
{
public class ShareClass : Activity, IShare
{
public async void Share(ImageSource imageSource)
{
var intent = new Intent(Intent.ActionSend);
intent.SetType("image/png");
var handler = new ImageLoaderSourceHandler();
var bitmap = await handler.LoadImageAsync(imageSource, this);
var path = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads
+ Java.IO.File.Separator + "logo.png");
using (var os = new System.IO.FileStream(path.AbsolutePath, FileMode.Create))
{
bitmap.Compress(Bitmap.CompressFormat.Png, 100, os);
}
intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
}
}
}
3 回答
您首先需要在
AndroidManifest.xml
中添加权限 .Xamarin.Android
Xamarin.iOS
以下是我用于ShareClass的代码,以便最终实现共享意图,希望它可以帮助某人:
这是我用于Android实现的内容
作为我的 targetSdkVersion >24 ,我将以下两行添加到 MainActivity.cs 以允许其他应用访问文件 .
以下是 AndroidManifest.xml 中允许的权限