Download to the public Downloads folder.

Removed ununsed permissions.
This commit is contained in:
Iulian Ciorascu
2023-02-09 16:14:50 +01:00
parent 65750b9f61
commit d7cbe40395
4 changed files with 30 additions and 9 deletions

View File

@@ -1,11 +1,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.paperless_mobile"> package="com.example.paperless_mobile">
<application
android:requestLegacyExternalStorage="true"/>
<!-- Flutter needs it to communicate with the running application <!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> android:maxSdkVersion="29"
tools:ignore="ScopedStorage"/>
<!-- <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> -->
</manifest> </manifest>

View File

@@ -2,7 +2,8 @@
package="com.example.paperless_mobile"> package="com.example.paperless_mobile">
<application android:label="Paperless Mobile" <application android:label="Paperless Mobile"
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/launcher_icon"> android:icon="@mipmap/launcher_icon"
android:requestLegacyExternalStorage="true">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
@@ -301,9 +302,9 @@
</application> </application>
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <!-- <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" /> android:maxSdkVersion="32" /> -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" /> android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

View File

@@ -58,9 +58,16 @@ class FileService {
static Future<Directory> get downloadsDirectory async { static Future<Directory> get downloadsDirectory async {
if (Platform.isAndroid) { if (Platform.isAndroid) {
return (await getExternalStorageDirectories( Directory? directory;
type: StorageDirectory.downloads))! directory = Directory('/storage/emulated/0/Download');
// Try the default global folder, if it exists
if (!await directory.exists()) {
directory = (await getExternalStorageDirectories(
type: StorageDirectory.downloads,
))!
.first; .first;
}
return directory;
} else if (Platform.isIOS) { } else if (Platform.isIOS) {
return getApplicationDocumentsDirectory(); return getApplicationDocumentsDirectory();
} else { } else {

View File

@@ -6,8 +6,10 @@ import 'package:paperless_mobile/core/service/file_service.dart';
import 'package:paperless_mobile/extensions/flutter_extensions.dart'; import 'package:paperless_mobile/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/generated/l10n.dart'; import 'package:paperless_mobile/generated/l10n.dart';
import 'package:paperless_mobile/helpers/message_helpers.dart'; import 'package:paperless_mobile/helpers/message_helpers.dart';
import 'package:paperless_mobile/helpers/permission_helpers.dart';
import 'package:paperless_mobile/constants.dart'; import 'package:paperless_mobile/constants.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:permission_handler/permission_handler.dart';
class DocumentDownloadButton extends StatefulWidget { class DocumentDownloadButton extends StatefulWidget {
final DocumentModel? document; final DocumentModel? document;
@@ -47,6 +49,13 @@ class _DocumentDownloadButtonState extends State<DocumentDownloadButton> {
context, "This feature is currently only supported on Android!"); context, "This feature is currently only supported on Android!");
return; return;
} }
if (true) {
// should check for android versions < 30
final isGranted = await askForPermission(Permission.storage);
if (!isGranted) {
return;
}
}
setState(() => _isDownloadPending = true); setState(() => _isDownloadPending = true);
final service = context.read<PaperlessDocumentsApi>(); final service = context.read<PaperlessDocumentsApi>();
try { try {