如何解决Xamarin Forms / Android-Intent Extras为空
我正在尝试打开图像意图(从图库中选择文件),但需要传递某些ID(项目/报告ID),需要对其进行处理才能获得意图结果。
无论我为意图选项/标志尝试过什么,都可以为意图(字符串)添加多余内容,但是结果上,多余内容始终为空。这是相关的代码(均为mainactivity):
var imageIntent = new Intent(Intent.ActionPick);
imageIntent.SetType("image/*");
imageIntent.PutExtra(Intent.ExtraAllowMultiple,true);
imageIntent.SetAction(Intent.ActionGetContent);
imageIntent.AddFlags (ActivityFlags.GrantReadUriPermission);
if (ProjectId != null && ProjectId.ToString().Length > 0) imageIntent.PutExtra("ProjectId",ProjectId.ToString());
if (ReportId != null && ReportId.ToString().Length > 0) imageIntent.PutExtra("ReportId",ReportId.ToString());
CrossCurrentActivity.Current.Activity.StartActivityForResult(imageIntent,requestCode);
和
protected override void OnActivityResult(int requestCode,Result resultCode,Intent data)
{
base.OnActivityResult(requestCode,resultCode,data);
...
if (data.Extras != null)
{
if (data.GetStringExtra ("ProjectId") != null) int.TryParse(data.GetStringExtra("ProjectId"),out ProjectId);
if (data.GetStringExtra("ReportId") != null) Guid.TryParse(data.GetStringExtra("ReportId"),out ReportId);
}
data.Extras在此处为空。
有什么建议吗?
先谢谢了。
解决方法
data.Extras为空
是的,有两个Intent。
当您使用StartActivityForResult
打开Gallery
时,我们可以将这个图像意图称为Intent1
,Intent1
包含ProjectId
和ReportId
。选择图像后,返回到上一个活动,系统将生成一个新的Intent,我们可以将其称为Intent2
。 Itent2
仅包含您选择的图像信息,不包含ProjectId
和ReportId
,因此您在data.Extras
中使用OnActivityResult
会得到空值。
如果您想在Android项目的任何活动或其他类中获取ProjectId
和ReportId
信息,则可以使用SharedPreferences
来实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。