为什么在 Android SDK 34 上,permission_handler 不会请求视频权限?

问题描述 投票:0回答:1

我正在为我的flutter应用程序使用permission_handler包,并使用Pixel 8 Pro API 35模拟器,我试图请求访问设备库。这是我会遇到的几个错误:

await Permission.videos.request();

flutter:
D/permissions_handler(22246): No permissions found in manifest for: []32

-- or --

flutter:
D/com.apparence.camerawesome.cameraX.CameraPermissions(21518): _onRequestPermissionsResult: received permissions but the EventSink is closed 

根据 pub.dev 上的软件包 documentation,在常见问题解答下,请求“存储”权限在 Android 13+ 上始终返回“拒绝”。因此,解决方案是使用 Permission.photos 和 Permission.videos。

READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 已弃用,因此现在使用 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO。

我还尝试了将compileSdk指定为33的文档,但构建发现CheckAarMetadataWorkAction检查AAR元数据有17个问题。所以我的compileSdk使用34。

根据 pub.dev 上的软件包 documentation,在常见问题解答下,请求“存储”权限在 Android 13+ 上始终返回“拒绝”。因此,解决方案是将 Permission.photos 和 Permission.videos 与 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO 一起使用,因为 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 均已弃用。

还将compileSdk版本设置为33。我将我的版本设置为34,因为我遇到了软件包版本11.3.1的兼容性问题。

因此 Permissions.photos 和 Permissions.audio 按预期工作,但 Permissions.videos 除外

AndroidManifext.xml

<manifest>
    ...

    <uses-permission android:name="android.permission.CAMERA"/> 
    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/> 
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/> 
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/> 
    <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/> 

    <!-- I added these even though they are deprecated -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.RECORD_AUDIO"/> 
</manifest>

android/app/src/build.gradle

android {
    ...
    compileSdk = 34

    defaultConfig {
        ...
        minSdk = 24
        targetSdk = 34
        versionCode = flutterVersionCode.toInteger()
        versionName = flutterVersionName
    }
}
flutter android-permissions android-storage
1个回答
0
投票

嗯..我建议尝试一下。

<manifest ...>
  <uses-feature
    android:name="android.hardware.camera"
    android:required="false"
    tools:targetApi="eclair" />

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

</manifest>
© www.soinside.com 2019 - 2024. All rights reserved.