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时,我们可以将这个图像意图称为Intent1Intent1包含ProjectIdReportId。选择图像后,返回到上一个活动,系统将生成一个新的Intent,我们可以将其称为Intent2Itent2仅包含您选择的图像信息,不包含ProjectIdReportId,因此您在data.Extras中使用OnActivityResult会得到空值。

如果您想在Android项目的任何活动或其他类中获取ProjectIdReportId信息,则可以使用SharedPreferences来实现。

How do I use SharedPreferences in Xamarin.Android?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...