Dev*_*evC 2 xamarin.android xamarin xamarin.forms
我不想通过自定义渲染器的社交媒体分享链接
public class CustomActions : ICustomActions
{
Context context = Android.App.Application.Context;
public void ShareThisLink()
{
Intent sharingInt = new Intent(Android.Content.Intent.ActionSend);
sharingInt.SetType("text/plain");
string shareBody = "https://www.google.com";
sharingInt.PutExtra(Android.Content.Intent.ExtraSubject, "Subject");
sharingInt.PutExtra(Android.Content.Intent.ExtraText, shareBody);
context.StartActivity(Intent.CreateChooser(sharingInt, "Share via"));
}
}
Run Code Online (Sandbox Code Playgroud)
发生此错误
Android.Util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Run Code Online (Sandbox Code Playgroud)
即使我添加下面的代码我仍然得到相同的错误
sharingInt.AddFlags(ActivityFlags.NewTask);
Run Code Online (Sandbox Code Playgroud)
问题是Intent.CreateChooser
创造另一个Intent
.你想要做的是在这个新意图上设置标志:
public void ShareThisLink()
{
Intent sharingInt = new Intent(Android.Content.Intent.ActionSend);
sharingInt.SetType("text/plain");
string shareBody = "https://www.google.com";
sharingInt.PutExtra(Android.Content.Intent.ExtraSubject, "Subject");
sharingInt.PutExtra(Android.Content.Intent.ExtraText, shareBody);
var intent = Intent.CreateChooser(sharingInt, "Share via");
intent.AddFlags(ActivityFlags.NewTask);
context.StartActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
或者为了避免执行此操作,您可以缓存MainActivity
实例Xamarin.Forms使用:
public MainActivity
{
public static MainActivity Instance {get;private set;}
protected override void OnCreate(Bundle bundle)
{
Instance = this;
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中使用Instance
as Context
而不是Application.Context
归档时间: |
|
查看次数: |
340 次 |
最近记录: |