选择图片时,Android 4.4.2崩溃

时间:2015-09-30 13:11:47

标签: android xamarin crash android-4.4-kitkat

在Xamarin Android开发应用程序期间,我们遇到了奇怪的错误。拾取图像/视频(无论是来自相机还是文档UI)应用程序有时会崩溃而不会出现错误。场景是我们打开应用程序,对活动进行步骤,选择图像的位置,然后通过标准方式打开相机或文档UI:

    public void ChooseMediaAfterTypeChose (bool photo, bool camera) {
        try {
            string title = "";
            int id;

            Intent iIntent;

            if (camera) {
                if (photo) {
                    iIntent = new Intent("android.media.action.IMAGE_CAPTURE");
                    id = Const.AND_pickImageID_camera;
                    App._file = new File (App._dir, "myPhoto.jpg");
                    iIntent.PutExtra (Android.Provider.MediaStore.ExtraOutput, Uri.FromFile (App._file));
                } else {
                    iIntent = new Intent("android.media.action.VIDEO_CAPTURE");
                    id = Const.AND_pickVideoID_camera;

                    App._file = new File (App._dir, "myVideo.mp4");
                    iIntent.PutExtra (Android.Provider.MediaStore.ExtraOutput, Uri.FromFile (App._file));
                }
            } else {
                iIntent = new Intent ();
                iIntent.SetAction (Intent.ActionGetContent);
                if (photo) {
                    iIntent.SetType ("image/jpg");
                    title = Static.mainData.currentTexts.ChoosePhoto;
                    id = Const.AND_pickImageID_galery;
                } else {
                    iIntent.SetType ("video/mp4");
                    title = Static.mainData.currentTexts.ChooseVideo;
                    id = Const.AND_pickVideoID_galery;
                }
            }

            if (camera) {
                StartActivityForResult (iIntent, id);
            } else {
                StartActivityForResult (Intent.CreateChooser (iIntent, title), id);
            }
        } catch (Exception ex) {
            ShowError (Static.mainData.currentTexts.MediaError);
            W.L(ex.Message);
        }
    }

所选应用程序在图像/视频选择过程中崩溃(例如,在浏览图像时,不选择任何内容)。当发生这种情况时,我们永远不会在代码中找到任何方法。

我们拥有什么:

  1. 当用户不选择照片时,应用程序运行时没有任何内存崩溃
  2. 有时挑选会毫无错误地进行。
  3. 我们认为这个问题主要是针对Android 4.4.2(它只发生在我们这个机器人的设备上 - 在我们没有遇到的其他Android版设备上)
  4. 我们尝试了什么:

    1. 我们将所有权限都设置为显示(读/写外部存储,hardware.camera等)
    2. 我们删除几乎所有内存存储内容以节省内存
    3. 所有活动在离开屏幕时从内存中卸载
    4. Logcat表示连接的每个进程(应用程序和活动应用程序)都已消失,无法跟踪任何错误
    5. 我们的问题是,是否有人偶然发现了类似的问题以及如何处理它。第二个问题是,是否有任何方法可以找出发生的事情。

      编辑:

      添加了App._dir代码。

              App._dir = new Java.IO.File (
                  Environment.GetExternalStoragePublicDirectory (
                      Environment.DirectoryPictures), "Camera");
              if (!App._dir.Exists ())
              {
                  App._dir.Mkdirs( );
              }
      

0 个答案:

没有答案