【发布时间】:2022-10-21 18:16:40
【问题描述】:
我尝试从文件目录('/storage/emulated/0/WhatsApp/Media/.Statuses')显示whatsapp状态图像。
但是没有出现任何图像。控制台显示 =>“无法打开文件:没有这样的文件或目录”.
我也将文件路径更改为 DCIM('/storage/emulated/0/DCIM/Camera/'),并且可以显示图像。
这里有什么问题?
我的代码:
final Directory _photoDir = new Directory(
'/storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/.Statuses/');
@override
Widget build(BuildContext context) {
if (!Directory("${_photoDir.path}").existsSync()) {
return Container(
child: Center(
child: Text("install WhatsApp\nsee your friends status here!"),
),
);
} else {
print(_photoDir.path);
var imageList = _photoDir
.listSync()
.map((item) => item.path)
.where((item) => item.endsWith(".jpg"))
.toList(growable: false);
print(imageList.length);
if (imageList.length > 0) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
crossAxisSpacing: 5.0,
mainAxisSpacing: 5.0,
),
itemCount: imageList.length,
itemBuilder: (context, index) {
String imgPath = imageList[index];
return Hero(
tag: imgPath,
child: Image.file(
File(imgPath),
fit: BoxFit.fill,
));
},
);
} else {
return Container(
child: Center(
child: Text("Sorry No Status found..!"),
),
);
}
}
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<!-- Permissions options for the `storage` group -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
获得许可
Future<void> requestLocationPermission() async {
final status = await Permission.storage.request();
Permission.photos.request();
if (status == PermissionStatus.granted) {
print('Permission Granted');
} else if (status == PermissionStatus.denied) {
print('Permission denied');
} else if (status == PermissionStatus.permanentlyDenied) {
print('Permission Permanently Denied');
await openAppSettings();
}
}
@override
void initState() {
super.initState();
requestLocationPermission();
}
【问题讨论】:
-
在尝试使用文件之前使用 File.exists() 如果它也存在 File.canRead() 。
-
您在 Android 11+ 设备上执行此操作?
-
是的,我在 android 11 上运行它。
标签: android flutter dart local-storage