aves/lib/utils/android_file_utils.dart
2020-02-07 19:00:31 +01:00

57 lines
2.1 KiB
Dart

import 'package:aves/utils/android_app_service.dart';
import 'package:path/path.dart';
final AndroidFileUtils androidFileUtils = AndroidFileUtils._private();
class AndroidFileUtils {
String externalStorage, dcimPath, downloadPath, picturesPath;
static Map appNameMap = {};
AndroidFileUtils._private();
Future<void> init() async {
// path_provider getExternalStorageDirectory() gives '/storage/emulated/0/Android/data/deckers.thibault.aves/files'
externalStorage = '/storage/emulated/0';
dcimPath = join(externalStorage, 'DCIM');
downloadPath = join(externalStorage, 'Download');
picturesPath = join(externalStorage, 'Pictures');
appNameMap = await AndroidAppService.getAppNames()
..addAll({'KakaoTalkDownload': 'com.kakao.talk'});
}
bool isCameraPath(String path) => path != null && path.startsWith(dcimPath) && (path.endsWith('Camera') || path.endsWith('100ANDRO'));
bool isScreenshotsPath(String path) => path != null && path.startsWith(dcimPath) && path.endsWith('Screenshots');
bool isScreenRecordingsPath(String path) => path != null && path.startsWith(dcimPath) && path.endsWith('Screen recordings');
bool isDownloadPath(String path) => path == downloadPath;
AlbumType getAlbumType(String albumDirectory) {
if (albumDirectory != null) {
if (androidFileUtils.isCameraPath(albumDirectory)) return AlbumType.Camera;
if (androidFileUtils.isDownloadPath(albumDirectory)) return AlbumType.Download;
if (androidFileUtils.isScreenRecordingsPath(albumDirectory)) return AlbumType.ScreenRecordings;
if (androidFileUtils.isScreenshotsPath(albumDirectory)) return AlbumType.Screenshots;
final parts = albumDirectory.split(separator);
if (albumDirectory.startsWith(androidFileUtils.externalStorage) && appNameMap.keys.contains(parts.last)) return AlbumType.App;
}
return AlbumType.Default;
}
String getAlbumAppPackageName(String albumDirectory) {
final parts = albumDirectory.split(separator);
return AndroidFileUtils.appNameMap[parts.last];
}
}
enum AlbumType {
Default,
App,
Camera,
Download,
ScreenRecordings,
Screenshots,
}