相机不工作的工作配置文件- Xamarin Android

ca1c2owp  于 5个月前  发布在  Android
关注(0)|答案(1)|浏览(71)

我使用Xamarin为Android设备开发了一个应用程序。我使用的是Xamarin.Essentials包中的媒体选择器。在我的工作场所,我们有两种类型的设备-一种有工作配置文件侧,使用Microsoft intunes的应用程序。该应用程序在其他设备上运行良好,但当我在具有工作配置文件的设备上打开相机时会崩溃。我已经在清单中请求了相关权限。是否有没有人有过这样的经验?这是我第一次使用Xamarin。我在下面包含了我的部分代码和它抛出的错误。
亲切问候

bool x = MediaPicker.IsCaptureSupported;
            if(x == false)
            {
               await DisplayAlert("ok", "alert", "cancel");
            }
            var photo = await MediaPicker.CapturePhotoAsync();

            var stream = await photo.OpenReadAsync();

            newImage.Source = ImageSource.FromStream(() => stream);
    
     

      java.lang.RuntimeException
java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3827)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4003)
  at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:85)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2317)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8595)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: java.lang.IllegalArgumentException: 
  at androidx.core.content.FileProvider.parsePathStrategy (FileProvider.java:606)
  at androidx.core.content.FileProvider.getPathStrategy (FileProvider.java:579)
  at androidx.core.content.FileProvider.getUriForFile (FileProvider.java:417)
  at crc64a0e0a82d0db9a07d.IntermediateActivity.n_onCreate (Native Method)
  at crc64a0e0a82d0db9a07d.IntermediateActivity.onCreate (IntermediateActivity.java:31)
  at android.app.Activity.performCreate (Activity.java:8207)
  at android.app.Activity.performCreate (Activity.java:8191)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1309)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3800)

字符串
更新:我想我可能需要请求应用程序的权限才能访问工作配置文件中的相机?这可能吗

ekqde3dh

ekqde3dh1#

在阅读文档后,我意识到问题可能是因为线程。
当你读到docs时,它清楚地说:
所有方法都必须在UI线程上调用,因为权限检查和请求是由Xamarin.software自动处理的。
因此,您用于获取照片的代码应该如下所示:

var photo = await Xamarin.Essentials.MainThread.
            InvokeOnMainThreadAsync(
            async () => await MediaPicker.CapturePhotoAsync());

字符串
这意味着你的完整代码看起来像这样:

bool x = MediaPicker.IsCaptureSupported;
        if(x == false)
        {
           await DisplayAlert("ok", "alert", "cancel");
        }
       var photo = await Xamarin.Essentials.MainThread.
            InvokeOnMainThreadAsync(
            async () => await MediaPicker.CapturePhotoAsync());
        var stream = await photo.OpenReadAsync();

        newImage.Source = ImageSource.FromStream(() => stream);


此外,这是有点奇怪的代码在您的其他设备上工作!

相关问题