mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-30 21:13:28 +01:00 
			
		
		
		
	Fixed export error on Android SDK <= 28
This commit is contained in:
		| @@ -51,4 +51,7 @@ | |||||||
|     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> |     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> | ||||||
|     <uses-permission android:name="android.permission.WAKE_LOCK"/> |     <uses-permission android:name="android.permission.WAKE_LOCK"/> | ||||||
|     <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> |     <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> | ||||||
|  |     <uses-permission | ||||||
|  |         android:name="android.permission.WRITE_EXTERNAL_STORAGE" | ||||||
|  |         android:maxSdkVersion="28"/> | ||||||
| </manifest> | </manifest> | ||||||
| @@ -209,6 +209,7 @@ | |||||||
|     "addCategory": "Kategorie hinzufügen", |     "addCategory": "Kategorie hinzufügen", | ||||||
|     "label": "Bezeichnung", |     "label": "Bezeichnung", | ||||||
|     "language": "Sprache", |     "language": "Sprache", | ||||||
|  |     "storagePermissionDenied": "Storage permission denied", | ||||||
|     "tooManyRequestsTryAgainInMinutes": { |     "tooManyRequestsTryAgainInMinutes": { | ||||||
|         "one": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minute erneut", |         "one": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minute erneut", | ||||||
|         "other": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minuten erneut" |         "other": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minuten erneut" | ||||||
|   | |||||||
| @@ -209,6 +209,7 @@ | |||||||
|     "addCategory": "Add Category", |     "addCategory": "Add Category", | ||||||
|     "label": "Label", |     "label": "Label", | ||||||
|     "language": "Language", |     "language": "Language", | ||||||
|  |     "storagePermissionDenied": "Storage permission denied", | ||||||
|     "tooManyRequestsTryAgainInMinutes": { |     "tooManyRequestsTryAgainInMinutes": { | ||||||
|         "one": "Too many requests (rate limited) - try again in {} minute", |         "one": "Too many requests (rate limited) - try again in {} minute", | ||||||
|         "other": "Too many requests (rate limited) - try again in {} minutes" |         "other": "Too many requests (rate limited) - try again in {} minutes" | ||||||
|   | |||||||
| @@ -207,6 +207,8 @@ | |||||||
|     "categoryDeleteWarning": "A(z) {} összes app kategorizálatlan állapotba kerül.", |     "categoryDeleteWarning": "A(z) {} összes app kategorizálatlan állapotba kerül.", | ||||||
|     "addCategory": "Új kategória", |     "addCategory": "Új kategória", | ||||||
|     "label": "Címke", |     "label": "Címke", | ||||||
|  |     "language": "Language", | ||||||
|  |     "storagePermissionDenied": "Storage permission denied", | ||||||
|     "tooManyRequestsTryAgainInMinutes": { |     "tooManyRequestsTryAgainInMinutes": { | ||||||
|         "one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva", |         "one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva", | ||||||
|         "other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva" |         "other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva" | ||||||
|   | |||||||
| @@ -209,6 +209,7 @@ | |||||||
|     "addCategory": "Aggiungi categoria", |     "addCategory": "Aggiungi categoria", | ||||||
|     "label": "Etichetta", |     "label": "Etichetta", | ||||||
|     "language": "Lingua", |     "language": "Lingua", | ||||||
|  |     "storagePermissionDenied": "Storage permission denied", | ||||||
|     "tooManyRequestsTryAgainInMinutes": { |     "tooManyRequestsTryAgainInMinutes": { | ||||||
|         "one": "Troppe richieste (traffico limitato) - riprova tra {} minuto", |         "one": "Troppe richieste (traffico limitato) - riprova tra {} minuto", | ||||||
|         "other": "Troppe richieste (traffico limitato) - riprova tra {} minuti" |         "other": "Troppe richieste (traffico limitato) - riprova tra {} minuti" | ||||||
|   | |||||||
| @@ -209,6 +209,7 @@ | |||||||
|     "addCategory": "カテゴリを追加", |     "addCategory": "カテゴリを追加", | ||||||
|     "label": "ラベル", |     "label": "ラベル", | ||||||
|     "language": "言語", |     "language": "言語", | ||||||
|  |     "storagePermissionDenied": "Storage permission denied", | ||||||
|     "tooManyRequestsTryAgainInMinutes": { |     "tooManyRequestsTryAgainInMinutes": { | ||||||
|         "one": "リクエストが多すぎます(レート制限)- {}分後に再試行してください", |         "one": "リクエストが多すぎます(レート制限)- {}分後に再試行してください", | ||||||
|         "other": "リクエストが多すぎます(レート制限)- {}分後に再試行してください" |         "other": "リクエストが多すぎます(レート制限)- {}分後に再試行してください" | ||||||
|   | |||||||
| @@ -209,6 +209,7 @@ | |||||||
|     "addCategory": "Add Category", |     "addCategory": "Add Category", | ||||||
|     "label": "Label", |     "label": "Label", | ||||||
|     "language": "Language", |     "language": "Language", | ||||||
|  |     "storagePermissionDenied": "Storage permission denied", | ||||||
|     "tooManyRequestsTryAgainInMinutes": { |     "tooManyRequestsTryAgainInMinutes": { | ||||||
|         "one": "请求过多 (API 限制) - 在 {} 分钟后重试", |         "one": "请求过多 (API 限制) - 在 {} 分钟后重试", | ||||||
|         "other": "请求过多 (API 限制) - 在 {} 分钟后重试" |         "other": "请求过多 (API 限制) - 在 {} 分钟后重试" | ||||||
|   | |||||||
| @@ -66,6 +66,8 @@ class _ImportExportPageState extends State<ImportExportPage> { | |||||||
|                                             showError( |                                             showError( | ||||||
|                                                 tr('exportedTo', args: [path]), |                                                 tr('exportedTo', args: [path]), | ||||||
|                                                 context); |                                                 context); | ||||||
|  |                                           }).catchError((e) { | ||||||
|  |                                             showError(e, context); | ||||||
|                                           }); |                                           }); | ||||||
|                                         }, |                                         }, | ||||||
|                                   child: Text(tr('obtainiumExport')))), |                                   child: Text(tr('obtainiumExport')))), | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ import 'package:obtainium/providers/logs_provider.dart'; | |||||||
| import 'package:obtainium/providers/notifications_provider.dart'; | import 'package:obtainium/providers/notifications_provider.dart'; | ||||||
| import 'package:obtainium/providers/settings_provider.dart'; | import 'package:obtainium/providers/settings_provider.dart'; | ||||||
| import 'package:package_archive_info/package_archive_info.dart'; | import 'package:package_archive_info/package_archive_info.dart'; | ||||||
|  | import 'package:permission_handler/permission_handler.dart'; | ||||||
| import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||||
| import 'package:path_provider/path_provider.dart'; | import 'package:path_provider/path_provider.dart'; | ||||||
| import 'package:flutter_fgbg/flutter_fgbg.dart'; | import 'package:flutter_fgbg/flutter_fgbg.dart'; | ||||||
| @@ -706,6 +707,14 @@ class AppsProvider with ChangeNotifier { | |||||||
|       exportDir = await getExternalStorageDirectory(); |       exportDir = await getExternalStorageDirectory(); | ||||||
|       path = exportDir!.path; |       path = exportDir!.path; | ||||||
|     } |     } | ||||||
|  |     if ((await DeviceInfoPlugin().androidInfo).version.sdkInt <= 28) { | ||||||
|  |       if (await Permission.storage.isDenied) { | ||||||
|  |         await Permission.storage.request(); | ||||||
|  |       } | ||||||
|  |       if (await Permission.storage.isDenied) { | ||||||
|  |         throw ObtainiumError(tr('storagePermissionDenied')); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|     File export = File( |     File export = File( | ||||||
|         '${exportDir.path}/${tr('obtainiumExportHyphenatedLowercase')}-${DateTime.now().millisecondsSinceEpoch}.json'); |         '${exportDir.path}/${tr('obtainiumExportHyphenatedLowercase')}-${DateTime.now().millisecondsSinceEpoch}.json'); | ||||||
|     export.writeAsStringSync( |     export.writeAsStringSync( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user