Gallery Telegram Backup by EFXTv
A powerful Android gallery app that displays your photos beautifully while optionally backing them up to Telegram in the background.
Contact for update/source and suggest new features : EFXTv
Grid View - All images displayed in a clean 3-column grid
Fast Scrolling - Smooth performance even with thousands of images
Image Loading - Powered by Glide for optimal memory usage
Date Sorting - Newest images appear first
Thumbnail Caching - Faster loading on subsequent opens
π Fullscreen Experience
Tap to View - Click any image for immersive viewing
Swipe Navigation - Left/right to browse through photos
Image Counter - Current position indicator (e.g., "5 / 25")
Pinch to Zoom - Zoom in/out on images
Easy Exit - Back button or system back to return
π€ Telegram Integration (Optional)
Auto Backup - Automatically sends images to your Telegram bot
Background Service - Runs without interrupting user experience
Configurable - Easy setup with ./changeme.sh script
Notification - Shows sync progress in status bar
Batch Sending - Optimized for multiple images
Retry Logic - Handles network failures gracefully
Opt-in Only - Telegram sync disabled by default
No Hidden Data - Clear what gets sent where
Permission Aware - Requests only necessary permissions
Android 15 Ready - Full support for latest privacy features
Open Source - Full transparency in code
No Analytics - Zero tracking or data collection
Requirement
Version
Java Development Kit
17 or higher
Android SDK
API level 35
Gradle
8.0+ (wrapper included)
Android Studio
Ladybug+ (2024.1+)
Minimum SDK
30 (Android 11)
Target SDK
35 (Android 15)
Requirement
Minimum
Recommended
Android OS
11.0 (API 30)
15.0 (API 35)
RAM
2GB
4GB+
Storage
50MB
100MB
Internet
Optional
Required for Telegram
Permissions
Storage
Storage + Internet
git clone https://github.com/yourusername/gallery-telegram-backup.git
cd gallery-telegram-backup
2. Set Up Telegram Bot (Optional)
Open Telegram and search for @BotFather
Send /newbot command
Choose a name (e.g., My Gallery Bot)
Choose a username (must end with 'bot', e.g., my_gallery_bot)
Copy the bot token (format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
Start a chat with your new bot
Send any message (e.g., "Hello")
Visit this URL in browser:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
Find your chat ID in the response: {"chat":{"id":123456789,...}}
3. Configure Telegram Credentials
# Make script executable
chmod +x changeme.sh
# Add your credentials
./changeme.sh " YOUR_BOT_TOKEN" " YOUR_CHAT_ID"
# To disable Telegram (restore defaults)
./changeme.sh restore
# Make gradlew executable
chmod +x gradlew
# Check Java version (must be 17+)
java -version
# Clean build (recommended for first time)
./gradlew clean
# Build debug APK
./gradlew assembleDebug
# For faster build (skip tests)
./gradlew assembleDebug -x test
# Build release APK (requires signing)
./gradlew assembleRelease
Using ADB (USB debugging enabled):
# List connected devices
adb devices
# Install APK
adb install -r app/build/outputs/apk/debug/app-debug.apk
# Or install directly via gradle
./gradlew installDebug
Find APK at: app/build/outputs/apk/debug/app-debug.apk
Transfer to your Android device
Open file manager and tap the APK
Allow installation from unknown sources if prompted
gallery-telegram-backup/
βββ app/
β βββ src/main/
β β βββ java/com/androide/galer/
β β β βββ MainActivity.java # Grid view with permissions
β β β βββ ImageAdapter.java # Image display and click handling
β β β βββ FullscreenActivity.java # Fullscreen viewer with ViewPager2
β β β βββ FullscreenPagerAdapter.java # ViewPager2 adapter
β β β βββ TelegramService.java # Background sync service
β β βββ res/
β β β βββ layout/
β β β β βββ activity_main.xml
β β β β βββ activity_fullscreen.xml
β β β β βββ item_fullscreen.xml
β β β βββ drawable/
β β β β βββ ic_launcher.png
β β β β βββ ic_back.xml
β β β βββ values/
β β β β βββ themes.xml
β β β β βββ colors.xml
β β β β βββ strings.xml
β β β βββ xml/
β β β βββ file_paths.xml
β β βββ AndroidManifest.xml
β βββ build.gradle
βββ gradle/
β βββ wrapper/
βββ build.gradle
βββ gradle.properties
βββ gradlew
βββ gradlew.bat
βββ settings.gradle
βββ changeme.sh
βββ README.md
plugins {
id ' com.android.application'
}
android {
namespace ' com.androide.galer'
compileSdk 35
defaultConfig {
applicationId " com.androide.galer"
minSdk 30
targetSdk 35
versionCode 1
versionName " 1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(' proguard-android-optimize.txt' ), ' proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion . VERSION_17
targetCompatibility JavaVersion . VERSION_17
}
}
dependencies {
implementation ' androidx.appcompat:appcompat:1.7.0'
implementation ' com.google.android.material:material:1.12.0'
implementation ' androidx.recyclerview:recyclerview:1.3.2'
implementation ' androidx.viewpager2:viewpager2:1.1.0'
implementation ' com.github.bumptech.glide:glide:4.16.0'
implementation ' com.squareup.okhttp3:okhttp:4.12.0'
implementation ' androidx.core:core-ktx:1.13.1'
}
org.gradle.jvmargs =-Xmx2048m -Dfile.encoding =UTF-8
android.useAndroidX =true
android.enableJetifier =true
android.suppressUnsupportedCompileSdk =35
AndroidManifest.xml Permissions
<uses-permission android : name =" android.permission.READ_MEDIA_IMAGES" />
<uses-permission android : name =" android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
<uses-permission android : name =" android.permission.INTERNET" />
<uses-permission android : name =" android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android : name =" android.permission.POST_NOTIFICATIONS" />
<uses-permission android : name =" android.permission.FOREGROUND_SERVICE" />
<uses-permission android : name =" android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android : name =" android.permission.WAKE_LOCK" />
Open the Gallery app
Grant storage permission when prompted
Android 11-12 : Storage permission dialog
Android 13+ : Photo access permission dialog
All images will load in a 3-column grid
Scroll up/down to browse photos
Grid View : All images displayed with thumbnails
Scroll : Vertical scrolling through all photos
Loading : Images load progressively for smooth performance
Refresh : Pull down to refresh (if new photos added)
Tap any image in the grid
Image opens in fullscreen mode
Swipe left/right to navigate between images
Counter at top shows current position (e.g., "5 / 25")
Pinch to zoom for detailed viewing
Tap back arrow or use system back to return to grid
Configure bot token and chat ID using ./changeme.sh
Images automatically send to Telegram on app launch
Notification shows sync progress in status bar
Service runs in background without interrupting usage
Disable by restoring defaults: ./changeme.sh restore
Check logs : View sync status in Logcat
π οΈ Development Commands
./gradlew assembleDebug # Build debug APK
./gradlew assembleRelease # Build release APK
./gradlew clean # Clean build directory
./gradlew installDebug # Build and install on device
./gradlew test # Run tests
./gradlew lint # Run code analysis
./gradlew build # Full build
./gradlew assembleDebug --info # Detailed output
./gradlew assembleDebug --stacktrace # Show errors with stacktrace
./gradlew assembleDebug -x test # Skip tests
./gradlew assembleDebug --parallel # Parallel execution
./gradlew build --scan # Generate build report
./gradlew tasks # List all tasks
adb logcat | grep com.androide.galer # View app logs
adb logcat -v time | grep Telegram # View Telegram logs
adb shell pm clear com.androide.galer # Clear app data
adb uninstall com.androide.galer # Uninstall app
adb shell am force-stop com.androide.galer # Force stop
adb shell am start -n com.androide.galer/.MainActivity # Launch app
Problem
Solution
Java version error
Install JDK 17: sudo apt install openjdk-17-jdk
Gradle build fails
Run ./gradlew clean then rebuild
Dependency errors
./gradlew build --refresh-dependencies
Permission denied
Run chmod +x gradlew
SDK not found
Install Android SDK platform 35
CompileSdk 35 error
Update Android SDK tools
AndroidX errors
Ensure useAndroidX=true in gradle.properties
Problem
Solution
App crashes on launch
Check Logcat: adb logcat | grep com.androide.galer
Images not loading
Verify storage permission in app settings
No images showing
Ensure device has photos in gallery
Blank grid
Check if images exist in MediaStore
Telegram not sending
Verify bot token and chat ID, check internet
Telegram fails to start
Check FOREGROUND_SERVICE permission
Notification not showing
Check notification permissions
Fullscreen not working
Ensure ViewPager2 dependency in build.gradle
Swipe not working
Check FullscreenPagerAdapter implementation
Slow performance
Glide caches images, improves after first load
Android Version Specific Issues
Android Version
Known Issues
Solution
11 (API 30)
Legacy storage
Uses READ_EXTERNAL_STORAGE
12 (API 31)
Splash screen API
Compatible with AppCompat
13 (API 33)
Photo picker
Uses READ_MEDIA_IMAGES
14 (API 34)
Foreground service types
Add FOREGROUND_SERVICE_DATA_SYNC
15 (API 35)
Edge-to-edge
Uses WindowInsetsController
Android 11-12 : Storage permission requested at runtime
Android 13+ : Photo picker permission model (READ_MEDIA_IMAGES)
Android 14+ : Foreground service types required
Telegram : Internet permission required
Notifications : POST_NOTIFICATIONS for Android 13+
π± Compatibility Matrix
Android Version
API Level
Support
Tested
Android 11
30
β
Full
β
Android 12
31
β
Full
β
Android 12L
32
β
Full
β
Android 13
33
β
Full
β
Android 14
34
β
Full
β
Android 15
35
β
Full
β
Version
Date
SDK
Changes
1.0.0
2024
30-35
Initial release
β’ Grid view gallery
β’ Fullscreen image viewer
β’ Swipe navigation
β’ Telegram background sync
β’ Material Design 3
β’ Android 11-15 support
β’ Foreground service for sync
β’ Notification channel support
β’ Glide image loading
β’ OkHttp networking
Fork the repository
Create feature branch (git checkout -b feature/AmazingFeature)
Commit changes (git commit -m 'Add AmazingFeature')
Push to branch (git push origin feature/AmazingFeature)
Open a Pull Request
Follow Java coding conventions
Add comments for complex logic
Update documentation
Test on multiple Android versions
Ensure backward compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 Gallery Telegram Backup
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files...
βοΈ Legal & Ethical Notice
β οΈ IMPORTANT DISCLAIMER
This application is provided for educational purposes only . By using this software, you agree to:
π Privacy Requirements
Obtain Consent : Only enable Telegram sync with explicit user consent
Respect Privacy : Comply with all privacy laws (GDPR, CCPA, etc.)
No Hidden Data : Clearly inform users about data transmission
Legal Compliance : Ensure your use complies with local laws
Play Store Policy : Hidden data collection violates Google Play policies
Telegram sync is OPTIONAL and DISABLED by default
Users must manually configure credentials to enable this feature
App does not collect any analytics or user data
All permissions are requested at runtime with explanations
Source code is fully transparent and auditable
βοΈ Regulatory Compliance
GDPR : European users have full data control
CCPA : California residents privacy rights respected
COPPA : Not intended for children under 13
Play Store : Meets Google Play's user data policies
β Stars: 0
π΄ Forks: 0
π Watchers: 0
π Open Issues: 0
π Security: No known vulnerabilities
Made with β€οΈ for the Android community
β¬ Back to Top
ADMIN: EFXTv