Compare commits

...

6 Commits

Author SHA1 Message Date
zarzet d641a517b8 ci: Fix disk cleanup - only remove safe directories 2026-01-04 12:09:13 +07:00
zarzet 608fa2ca74 ci: Fix disk cleanup - don't remove Android SDK path 2026-01-04 12:08:18 +07:00
zarzet 343b309314 ci: Add disk cleanup step to fix runner space issue 2026-01-04 12:01:34 +07:00
zarzet 0787b32dd8 v2.0.4: Fix Android 11 storage permission denied 2026-01-04 11:51:09 +07:00
zarzet 6927fdf7a9 fix: Android 11 storage permission denied issue 2026-01-04 11:48:19 +07:00
zarzet fe6af34478 Update screenshots 2026-01-04 00:14:33 +07:00
11 changed files with 65 additions and 9 deletions
+14
View File
@@ -45,6 +45,20 @@ jobs:
needs: get-version
steps:
- name: Free disk space
run: |
# Remove large unused tools (~15GB total)
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/share/boost
sudo rm -rf /usr/share/swift
sudo rm -rf /usr/local/.ghcup
# Clean docker images
sudo docker image prune --all --force
# Show available space
df -h
- name: Checkout repository
uses: actions/checkout@v4
+7
View File
@@ -1,5 +1,12 @@
# Changelog
## [2.0.4] - 2026-01-04
### Fixed
- **Android 11 Storage Permission**: Fixed "Permission denied" error on Android 11 (API 30) devices
- Added `MANAGE_EXTERNAL_STORAGE` permission for Android 11-12
- Shows explanation dialog before opening system settings
## [2.0.3] - 2026-01-03
### Added
+4 -4
View File
@@ -18,10 +18,10 @@ Get Spotify tracks in true FLAC from Tidal, Qobuz & Amazon Music — no account
## Screenshots
<p align="center">
<img src="assets/images/1.jpg" width="200" />
<img src="assets/images/2.jpg" width="200" />
<img src="assets/images/3.jpg" width="200" />
<img src="assets/images/4.jpg" width="200" />
<img src="assets/images/1.jpg?v=2" width="200" />
<img src="assets/images/2.jpg?v=2" width="200" />
<img src="assets/images/3.jpg?v=2" width="200" />
<img src="assets/images/4.jpg?v=2" width="200" />
</p>
## Other project
+3 -1
View File
@@ -4,9 +4,11 @@
<!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<!-- For Android 11+ (API 30-32) - full storage access -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 135 KiB

+2 -2
View File
@@ -1,8 +1,8 @@
/// App version and info constants
/// Update version here only - all other files will reference this
class AppInfo {
static const String version = '2.0.3';
static const String buildNumber = '33';
static const String version = '2.0.4';
static const String buildNumber = '34';
static const String fullVersion = '$version+$buildNumber';
+34 -1
View File
@@ -87,10 +87,43 @@ class _SetupScreenState extends ConsumerState<SetupScreen> {
PermissionStatus status;
if (_androidSdkVersion >= 33) {
// Android 13+: Use audio permission
status = await Permission.audio.request();
} else if (_androidSdkVersion >= 30) {
status = await Permission.manageExternalStorage.request();
// Android 11-12: Need MANAGE_EXTERNAL_STORAGE
// This opens system settings, not a dialog
status = await Permission.manageExternalStorage.status;
if (!status.isGranted) {
// Show explanation dialog first
if (mounted) {
final shouldOpen = await showDialog<bool>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Storage Access Required'),
content: const Text(
'Android 11+ requires "All files access" permission to save music files.\n\n'
'Please enable "Allow access to manage all files" in the next screen.',
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context, false),
child: const Text('Cancel'),
),
FilledButton(
onPressed: () => Navigator.pop(context, true),
child: const Text('Open Settings'),
),
],
),
);
if (shouldOpen == true) {
status = await Permission.manageExternalStorage.request();
}
}
}
} else {
// Android 10 and below: Use legacy storage permission
status = await Permission.storage.request();
}
+1 -1
View File
@@ -1,7 +1,7 @@
name: spotiflac_android
description: Download Spotify tracks in FLAC from Tidal, Qobuz & Amazon Music
publish_to: 'none'
version: 2.0.3+33
version: 2.0.4+34
environment:
sdk: ^3.10.0