Android 13 : Getting Android.App.Result.Canceled on OnActivityresult when Taking Picture from Camera

501 Views Asked by At

Team,

Trying to Work on Camera Taking Picture but everytime getting result as Android.App.Result.Canceled and data as null on OnActivityresult function.

TakePicture.Click += delegate
        {
            if (slabDetails != null)
            {
                File SlabFile = new File(Constants.INVENTORY_PATH, slabDetails.ExtSlabNo + ".jpg");
                //if (SlabFile.Exists()) { SlabFile.Delete(); }
                //SlabFile.CreateNewFile();
                imageUri = Uri.FromFile(SlabFile);

                //var documentsDirectry = ApplicationContext.GetExternalFilesDir(Environment.DirectoryPictures);
                //File cameraFile = new Java.IO.File(documentsDirectry, "default_image" + ".jpg");
                //Uri photoURI = Uri.FromFile(cameraFile);

                Intent camIntent = new Intent(MediaStore.ActionImageCapture);
                camIntent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
                camIntent.PutExtra(MediaStore.ExtraOutput, imageUri);
                camIntent.AddFlags(ActivityFlags.GrantReadUriPermission);
                camIntent.AddFlags(ActivityFlags.GrantWriteUriPermission);
                StartActivityForResult(camIntent, 2);
            }
        };

On Activity Result Function

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);
        switch (requestCode)
        {
            case 2:// From Camera
                if (resultCode == Result.Ok)
                {
                    try
                    {
                        new SyncDataTask(this, data, 1, db).Execute();
                    }
                    catch (Exception ex)
                    {
                        var method = System.Reflection.MethodBase.GetCurrentMethod();
                        var methodName = method.Name;
                        var className = method.ReflectedType.Name;

                        MainActivity.SaveLogReport(className, methodName, ex);
                    }
                    catch (OutOfMemoryError ex)
                    {
                        ex.PrintStackTrace();
                    } 
               }
         }
   }

Using Xamarin Native Android deploying in Android API 33 and Android 12 Version tablets. It Return the Image and Works good on android version 11 tablets.

Provided permissions in android manifest file as per Android 13 Tutorials

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.MANAGE_MEDIA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

So, I would like to return Android.App.Result.Ok and data in ActivityResult. So, Do anybody faced the issue. Please help me in this Case. Thanks in Advance.

0

There are 0 best solutions below