如何解决存储权限始终在 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 举报,一经查实,本站将立刻删除。