【问题标题】:.Net Maui: StorageWrite permission stops working with .net 7 on Android emulator.Net Maui:StorageWrite 权限停止在 Android 模拟器上使用 .net 7
【发布时间】:2022-11-27 05:47:55
【问题描述】:

它在 .NET 6 上运行,但现在当我将我的 .net maui 项目迁移到 .net 7 时,问题开始出现:我将 MediaPicker 放置到我项目的一个 xaml 页面上,以便捕获图片并将其存储在应用程序数据中目录。我可以运行 Android 模拟器并获得相机许可,但它停止了存储工作。我删除并重新创建了 Android 模拟器设备,我尝试了不同的 Android 版本,如 API 29、33,但没有任何效果。我曾经在执行CapturePhotoAsync时自动弹出Android权限对话框窗口,现在没有,即使明确请求权限它仍然不显示对话框窗口并立即返回Denied

// got PermissionStatus.Denied, no dialog window requesting permission pops up
PermissionStatus status = await Permissions.RequestAsync<Permissions.StorageWrite>();

如果我忽略它并尝试存储图片,它会引发异常 Microsoft.Maui.ApplicationModel.PermissionException: 'StorageWrite permission was not granted: Denied'

任何人都可以提出可能出了什么问题以及我可以尝试解决什么问题

更新: 创建分钟。项目并上传到github:github.com/YMichurin/mauiStoragePermissions

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.android maui


    【解决方案1】:

    我已经做了一个示例来测试您的代码。单击按钮后将显示权限请求对话框。

    您是否忘记将权限添加到 AndroidManifest.xml 中?如:

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    此外,您可以使用.net 7.0 创建一个新项目来测试代码。它在我的项目中运作良好。

    更新

    当我将您的项目克隆到 vs 时,出现了一些包错误。在我将以下代码添加到 csproj.cs 中后,项目成功运行。

    <ItemGroup>
       <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0-rc.2.22430.11" />
       <PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0-rc.2.22430.11" />
       <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0-rc.2.22430.11" />
       <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0-rc.2.22430.11" />
    </ItemGroup>
    

    结果:

    控制台日志:

    在我授予权限后,权限请求对话框将显示并且图片已成功保存。

    【讨论】:

    • 感谢您查看@Liyun。我有权限集,它在迁移之前在 .net 6 中完美运行。我会尝试创建全新的项目并让你知道
    • 它在新项目中有效吗? @YMC
    • 不,不幸的是,它没有帮助,同样的问题,我尝试了不同的 Android 模拟器。我把项目上传到这里github.com/YMichurin/mauiStoragePermissions,你可以拿去在你的机器上试试吗?
    • 请检查更新后的答案,我在 android 12 模拟器上运行它。 @YMC
    • 有趣的。虽然引用这些包和重建解决方案对我没有帮助,但您的行为帮助我了解我的开发环境中存在严重问题,因此我重新安装了 VS 以及 SDK 和 Maui 工作负载。现在解决方案有效,对话窗口又回来了。谢谢你,感谢你的帮助
    【解决方案2】:

    这个问题是 Android 13 with MAUI 特有的,open issue 在这里:

    https://github.com/dotnet/maui/issues/11275

    使用 Android 12 模拟器或更低版本应该可以。

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多