存储权限始终在 Flutter 权限处理程序中被拒绝

如何解决存储权限始终在 Flutter 权限处理程序中被拒绝

我尝试更改锁屏壁纸,但出现这样的错误

D/permissions_handler( 5642): No android specific permissions needed for: 9
I/Flutter ( 5642): Android Storage Permission Status: PermissionStatus.denied
I/System.out( 5642): ImagegallerySaverPlugin 80
I/e.wallpaperapp( 5642): Waiting for a blocking GC ProfileSaver
I/e.wallpaperapp( 5642): WaitForGcToComplete blocked ProfileSaver on ProfileSaver for 24.060ms

我在 android 10 (API 29) 和 Android 11 (API 30) 和 Android 上的存储权限中进行测试总是被拒绝这里是我的权限处理代码

 _askPermission() async {
    if (io.Platform.isIOS) {
      var photosstatus = await Permission.photos.status;
      if (photosstatus.isDenied) {
        await Permission.photos.request();
        print("Photos Permission Status" + photosstatus.toString());
      }
    } else {
      var photoStatus = await Permission.photos.status;
      var storageStatus = await Permission.storage.status;
      if (storageStatus.isDenied) {
        await Permission.storage.request();
        print("Android Storage Permission Status: " + storageStatus.toString());

      } else if (photoStatus.isDenied) {
        await Permission.photos.request();
        print("Android Photos Permission Status: " + photoStatus.toString());
      }
      // Map<Permission,PermissionStatus> statuses = await [Permission.storage].request();
      // print(statuses[Permission.storage]);

    }
  }

这里是在lockreen和主屏幕上保存和设置墙纸的实现

// saving image to gallery function
  _save() async {
    if (io.Platform.isAndroid){
      await _askPermission();
    }

    var response = await dio().get(
      widget.imgurl,options: Options(responseType: ResponseType.bytes)
    );
    final result = await ImagegallerySaver.saveImage(Uint8List.fromList(response.data));
    print(result);
    print('default path: '+ result['filePath'].toString());

    // set wallpaper to home Screen and LockScreem
    // int lockScreenLocation = WallpaperManager.LOCK_SCREEN;
    // int homeScreenLocation = WallpaperManager.HOME_SCREEN;
    int bothScreenLocation = WallpaperManager.BOTH_SCREENS;

    // set path image
    final imagePath = result['filePath'].toString().replaceAll(RegExp('file://'),'');

    // setting wallpaper
    String setBoth;
    // String setLockScreen;
    // String setHomeScreen;
    try {
      // setLockScreen = await WallpaperManager.setWallpaperFromFile(imagePath,lockScreenLocation);
      // setHomeScreen = await WallpaperManager.setWallpaperFromFile(imagePath,homeScreenLocation);
      setBoth = await WallpaperManager.setWallpaperFromFile(imagePath,bothScreenLocation);

      // print status to console
      print(setBoth);
      // print(setHomeScreen);

    } on PlatformException {
      // setLockScreen = "Failed To Set Wallpaper in LockScreen";
      // setHomeScreen = "Failed to Set Wallpaper in HomeScreen";
      setBoth = "Failed To Set Wallpaper in Both";
    }
    if (!mounted) {
      return;
    }

    Navigator.pop(context);
  }

这是我在清单上的用户权限设置

 package="com.example.wallpaperapps">
    <!-- Manifest -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"  android:maxsdkVersion="29" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.SET_WALLPAPER" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:minSdkVersion="30" />

   <application
       android:requestLegacyExternalStorage="true"
        android:label="wallpaperapps"
        android:icon="@mipmap/ic_launcher">

....

主屏幕已成功更改但 lockreen 失败,有人可以帮助我吗?解决我的问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?