{"id":15111171,"url":"https://github.com/cvzi/screenshottile","last_synced_at":"2026-06-14T00:01:49.491Z","repository":{"id":38073191,"uuid":"162763494","full_name":"cvzi/ScreenshotTile","owner":"cvzi","description":"📲 Screenshot Tile for Android without Root","archived":false,"fork":false,"pushed_at":"2026-06-09T11:36:44.000Z","size":44474,"stargazers_count":362,"open_issues_count":28,"forks_count":41,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-06-09T13:16:27.156Z","etag":null,"topics":["android","android-app","android-application","quicksetting-tiles","quicksettings","screenshot","screenshot-utility","tile"],"latest_commit_sha":null,"homepage":"https://f-droid.org/packages/com.github.cvzi.screenshottile/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cvzi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"cvzi","ko_fi":"cuzicvzi","liberapay":"cuzi","custom":["https://bandcamp.com/cuzi/wishlist","https://buymeacoff.ee/cuzi","https://live.blockcypher.com/btc/address/3KDs3RjvsKzbFQ8XoHkGqZxQtSxn2WYbn1/"],"patreon":"cuzi"}},"created_at":"2018-12-21T22:35:42.000Z","updated_at":"2026-06-09T11:26:01.000Z","dependencies_parsed_at":"2023-10-04T01:56:11.640Z","dependency_job_id":"d8e6f5bd-71fb-4459-bf6b-f32767e7e1a7","html_url":"https://github.com/cvzi/ScreenshotTile","commit_stats":null,"previous_names":[],"tags_count":145,"template":false,"template_full_name":null,"purl":"pkg:github/cvzi/ScreenshotTile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvzi%2FScreenshotTile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvzi%2FScreenshotTile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvzi%2FScreenshotTile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvzi%2FScreenshotTile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cvzi","download_url":"https://codeload.github.com/cvzi/ScreenshotTile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvzi%2FScreenshotTile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34304629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-app","android-application","quicksetting-tiles","quicksettings","screenshot","screenshot-utility","tile"],"created_at":"2024-09-26T00:02:00.545Z","updated_at":"2026-06-14T00:01:49.458Z","avatar_url":"https://github.com/cvzi.png","language":"Kotlin","funding_links":["https://github.com/sponsors/cvzi","https://ko-fi.com/cuzicvzi","https://liberapay.com/cuzi","https://bandcamp.com/cuzi/wishlist","https://buymeacoff.ee/cuzi","https://live.blockcypher.com/btc/address/3KDs3RjvsKzbFQ8XoHkGqZxQtSxn2WYbn1/","https://patreon.com/cuzi"],"categories":[],"sub_categories":[],"readme":"[![app icon](app/src/main/res/mipmap-hdpi/ic_launcher.png)](https://github.com/cvzi/ScreenshotTile) ScreenshotTile (NoRoot)\n=======================\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![F-Droid](https://img.shields.io/f-droid/v/com.github.cvzi.screenshottile.svg)](https://f-droid.org/packages/com.github.cvzi.screenshottile/)\n[![Play Store](https://img.shields.io/endpoint?color=green\u0026label=Store\u0026logo=google-play\u0026logoColor=green\u0026url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dcom.github.cvzi.screenshottile%26m%3D%24rating%2520%25E2%25AD%2590%2520v%24version%2520)](https://play.google.com/store/apps/details?id=com.github.cvzi.screenshottile)\n[![Download APK file](https://img.shields.io/github/release/cvzi/ScreenshotTile.svg?label=Download%20.apk\u0026logo=android)](https://github.com/cvzi/ScreenshotTile/releases/latest)\n![Downloads](https://img.shields.io/endpoint?color=luigi\u0026url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dcom.github.cvzi.screenshottile%26l%3DDownloads%26m%3D%24totalinstalls)\n[![F-Droid build status](https://img.shields.io/endpoint?logo=textpattern\u0026logoColor=blue\u0026url=https%3A%2F%2Ff-droid-build.cuzi.workers.dev%2Fcom.github.cvzi.screenshottile)](https://monitor.f-droid.org/)\n[![🔨 Gradle Build](https://github.com/cvzi/ScreenshotTile/actions/workflows/gradleCI.yml/badge.svg)](https://github.com/cvzi/ScreenshotTile/actions/workflows/gradleCI.yml)\n\n\n\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\n     alt=\"Get it on F-Droid\"\n     height=\"80\"\u003e](https://f-droid.org/packages/com.github.cvzi.screenshottile/)\n[\u003cimg src=\"https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png\"\n     alt=\"Get it on Google Play\"\n     height=\"80\"\u003e](https://play.google.com/store/apps/details?id=com.github.cvzi.screenshottile)\n\nConsider [donating to F-Droid](https://f-droid.org/donate/).\n\n$\\textcolor{#D00000}{\\textsf{F-Droid is under threat. Google is changing the way you install apps on your device:}}$  https://keepandroidopen.org/\n\nScreenshot Tile for Android 7.0+ without requiring root access\n\nVideo:\n\n[![Video screenshot](/docs/imgs/youtube.png)](https://www.youtube.com/watch?v=PX6pVvfYRH0)\n\nFork of [github.com/ipcjs/ScreenshotTile](https://github.com/ipcjs/ScreenshotTile)\n\n## Table of Contents\n- [Languages](#languages)\n- [Contributors \u0026 libraries](#contributors--libraries)\n- [Technical details](#technical-details)\n   - [Legacy/Original method](#legacyoriginal-method-)\n   - [Native method](#native-method-with-system-defaults-enabled-)\n   - [Native method with custom settings](#native-method-with-custom-settings--)\n   - [Restricted Settings](#restricted-settings-only-native-method)\n   - [Cast icon](#cast-icon--only-legacy-method)\n   - [Permission Scope](#permission-scope-only-legacy-method)\n   - [Permissions](#permissions)\n- [Automatic screenshots](#automatic-screenshots-with-broadcast-intents)\n- [Screenshots via activity intent](#automatic-screenshots-with-activity-intents)\n- [Miscellaneous data](#miscellaneous-data)\n\n[Changelog](CHANGELOG.md) • [View older releases](https://gitlab.com/cvzi/binaries/-/tree/main/ScreenshotTile) • [Google store](https://play.google.com/store/apps/details?id=com.github.cvzi.screenshottile)\n\n\n## Languages\n\nTo help translate this app, please visit [crowdin.com](https://crowdin.com/project/screenshottile), where the localizations are managed. If you like to add a new language, please open an issue or email me and I will add it.\n\n\u003ca href=\"https://crowdin.com/project/screenshottile\" rel=\"nofollow\"\u003e\u003cimg style=\"width:140;height:40px\" src=\"https://badges.crowdin.net/badge/dark/crowdin-on-light.png\" srcset=\"https://badges.crowdin.net/badge/dark/crowdin-on-light.png 1x,https://badges.crowdin.net/badge/crowdin-on-light@2x.png 2x\"  alt=\"Crowdin | Agile localization for tech companies\" /\u003e\u003c/a\u003e\n\nYou may translate the resource files directly and open a pull request. The English source is in [/app/src/main/res/values-en/strings.xml](/app/src/main/res/values-en/strings.xml) and the translated files are stored in [/app/src/main/res/values-XX/strings.xml](/app/src/main/res/) (XX = language code)\n\n## Contributors \u0026 libraries\n\n[![Contributors](https://contrib.rocks/image?repo=cvzi/ScreenshotTile)](https://github.com/cvzi/ScreenshotTile/graphs/contributors)\n\nThe internal image editor and image library used is [github.com/burhanrashid52/PhotoEditor](https://github.com/burhanrashid52/PhotoEditor) (MIT license) by [Burhanuddin Rashid](https://github.com/burhanrashid52).\n\nThe open source libraries and their licenses are show-cased in-app in the app's about section with the [gradle-license-plugin](https://github.com/jaredsburrows/gradle-license-plugin) by [Jared Burrows](https://github.com/jaredsburrows/).\n\n## Technical details\n\nThis app supports three different methods to take screenshots\n\n### Legacy/Original method \u003cimg src=\"/docs/imgs/SwitchLegacyMethod.png\" alt=\"Legacy method switch on\" height=\"25\"/\u003e\nThis method uses the screen recording/screen cast capabilities of Android to record a single frame.\n\nRequirements:\n*   Android 7 Nougat\n*   Storage permission\n*   [ScreenCaptureIntent/MediaProjection permission](https://developer.android.com/reference/android/media/projection/MediaProjectionManager.html#createScreenCaptureIntent())\n*   \u003cimg src=\"/docs/imgs/StoragePermission.png\" alt=\"Storage permission screenshot\" height=\"90\"/\u003e\n*   \u003cimg src=\"/docs/imgs/ScreenCaptureIntent.png\" alt=\"MediaProjection permission screenshot\" height=\"130\"/\u003e\n\nProperties:\n*   Custom storage location\n*   Custom format\n*   Custom notification\n*   Before Android 9 the ScreenCaptureIntent/MediaProjection permission was only asked once when adding the tile (with option \"Don't show again\"). Since Android 9 it needs to be granted frequently before taking a screenshot\n\n### Native method with system defaults enabled \u003cimg src=\"/docs/imgs/SwitchNativeMethod.png\" alt=\"Native method switch on\" height=\"25\"/\u003e\nThis method uses the screenshot function of the device. It's exactly the same as pressing the Home+Power button or whichever key combination is used for screenshots on that phone.\n\nRequirements:\n*   Android 9 Pie\n*   Accessibility service needs to be started in the system settings\n*   \u003cimg src=\"/docs/imgs/AccessibilityServicePermission.png\" alt=\"Accessibility service screenshot\" height=\"230\"/\u003e\n\nProperties:\n*   No permissions needed, only activating the accessibility service once\n*   Functions like long screenshots, screenshot editor, notifications, thumbnail etc., which the device manufacturer may have added, can be used\n\n### Native method with custom settings \u003cimg src=\"/docs/imgs/SwitchNativeMethod.png\" alt=\"Native method switch on\" height=\"25\"/\u003e \u003cimg src=\"/docs/imgs/SwitchSystemDefaultsOff.png\" alt=\"Use system defaults switch off\" height=\"25\"/\u003e\nThis method uses [AccessibilityService#takeScreenshot](https://developer.android.com/reference/android/accessibilityservice/AccessibilityService#takeScreenshot%28int,%20java.util.concurrent.Executor,%20android.accessibilityservice.AccessibilityService.TakeScreenshotCallback%29) which outputs a bitmap that can be compressed and stored on disk.\n\nRequirements:\n*   Android 11 R\n*   Accessibility service needs to be started in the system settings\n*   Storage permission\n*   \u003cimg src=\"/docs/imgs/AccessibilityServicePermission.png\" alt=\"Accessibility service screenshot\" height=\"230\"/\u003e\n*   \u003cimg src=\"/docs/imgs/StoragePermission.png\" alt=\"Storage permission screenshot\" height=\"90\"/\u003e\n\nProperties:\n*   Custom storage location\n*   Custom format\n*   Custom notification\n\n### Restricted Settings (only Native method)\n\nOn Android 13 and above, device manufacturers may restrict the settings that can be enabled for an app. In such cases, the option to enable the app in the accessibility settings will appear grayed out. This means that both the \"floating button\" and the \"native method\" cannot be enabled. Notably, this is the case on Pixel phones running Android 14:\n\n![Grayed Out Accessibility Settings](/docs/imgs/AccessibilityOff.png)\n\nTo circumvent this protection, you need to enable the \"restricted settings\" option. First, try to enable the accessibility service. Tap on the grayed-out option, and you will see a dialog regarding the restricted settings:\n\n![Dialog About Restricted Settings](/docs/imgs/AccessibilityGrayedOut.png)\n\nNow, open the Android system settings and go to \"Apps\" \u003e \"All apps.\" Find \"ScreenshotTile,\" and in the app info, tap the three dots in the top right corner, and select \"Allow Restricted Settings\":\n\n![Allow Restricted Settings](/docs/imgs/AllowRestrictedSettings.png)\n\nWith \"restricted settings\" allowed, you can reopen the app and enable either the \"native method\" or the \"floating button.\" The accessibility settings will open, and you can enable the app.\n\nRead more about this: https://support.google.com/android/answer/12623953#allowrestrictedsettings\n\n### \u003ca name=\"icon\"\u003eCast icon:\u003c/a\u003e ![cast icon](/docs/imgs/casticon.png) (only Legacy method)\n\nIf you don't want to see the cast icon in the status bar on every screenshot, you can turn\nit off on most phones. I do not recommend turning it off, as it is generally\na good idea to know when an app is recording the screen.  \nHere's an explanation on how to turn it off:\n[PCTattletale.com - How to turn off Android's Pesky Chromecast Icon](https://www.pctattletale.com/blog/3050/how-to-turn-off-androids-pesky-chromecast-icon/)\n\n### Permission Scope (only Legacy method)\n\nFrom Android 14 onwards, the permission dialog for the screen recording let's you choose between recording the current screen or choosing an app to capture:\n\u003cimg src=\"/docs/imgs/LegacyScope.png\" alt=\"Scope of screen recording permission\" height=\"600\"/\u003e\nIf you select \"Choose an app\" in the app settings, you can choose in the permission dialog to record an app or select \"Entire screen\" to capture the current screen.\nIf you select \"Current screen\" in the app settings, the permission dialog is pre-selected to \"Share entire screen\" and you only have to press \"Share screen\". In this case, you can not change the selection to \"Share one app\".\n\n### Permissions\n\n#### [`android.permission.WRITE_EXTERNAL_STORAGE`](https://developer.android.com/reference/android/Manifest.permission#WRITE_EXTERNAL_STORAGE) \"Photos/Media/Files and Storage\"\n\u003e   Read the contents of your internal storage/USB storage  \n\u003e   Modify or delete the contents of your internal storage/USB storage\n\nThis is required to save the screenshot files on the internal storage of your device.\nSince Android 10/Q this permission is no longer used.\n\n#### [`android.permission.FOREGROUND_SERVICE`](https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE)\n\nSince Android 9/Pie this permission is required to take screenshots. It basically means that this app can run without showing itself. However the app will always show a notification when it is running.\n\n#### [`android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION`](https://developer.android.com/reference/android/Manifest.permission#FOREGROUND_SERVICE_MEDIA_PROJECTION)\n\nSince Android 14/U this permission is required to take screenshots. It is a more specific version of the `android.permission.FOREGROUND_SERVICE` permission that allows to mirror the screen.\n\n#### [ScreenCaptureIntent](https://developer.android.com/reference/android/media/projection/MediaProjectionManager.html#createScreenCaptureIntent())\n\n\u003e   ScreenshotTile will start capturing everything that's displayed on your screen.\n\nThis is a special permission that is requested before you take a screenshot or when you add the tile to you quick settings. It allows the app to record the screen. In this case, for a screenshot, the recording is only one image/frame.\n\n#### [`android.permission.POST_NOTIFICATIONS`](https://developer.android.com/about/versions/13/changes/notification-permission)\n\nSince Android 13/Tiramisu this permission can be used to request the ability to show notifications. You can choose \"Don't allow\" to block all notifications.\n\n# \u003ca name=\"automatic\"\u003eAutomatic screenshots with Broadcast intents\u003c/a\u003e\n\nYou can automate taking screenshots with apps like [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid), [Automate](https://llamalab.com/automate/) or [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm).\nThis works via [Broadcast intents](https://developer.android.com/guide/components/broadcasts).\n\nTutorial video on youtube: [https://youtu.be/q5hQF1nzOzk](https://www.youtube.com/watch?v=q5hQF1nzOzk)\n\n![Macro intent screenshot](/docs/imgs/MacroDroid_overview.png)\n\nFirst you have to activate this feature by setting a password in the app settings.\n\nNow you can **add a macro** to MacroDroid:\n*   Open MacroDroid and tap on *Macros* and then *Add Macro* or the ➕ Symbol\n*   Tab ➕ on *Triggers* and add your desired trigger\n*   Tab ➕ on *Actions* and go to *Connectivity* -\u003e *Send Intent*\n*   Under *Target* select **Broadcast** and fill out the fields:\n    *   Action: `com.github.cvzi.screenshottile.SCREENSHOT`\n    *   Package: `com.github.cvzi.screenshottile`\n    *   Data (class name): `com.github.cvzi.screenshottile.IntentHandler`\n    *   Extra 1 parameter: `secret`\n    *   Extra 1 value: `yourPasswordFromEarlier`\n    *   (Optional: Extra 2 parameter `partial`, value `true` to open the area selector for a partial screenshot instead of taking a screenshot)\n\n![Macro intent screenshot](/docs/imgs/MacroDroid_SendIntent.png)\n\n## \u003ca name=\"terminal\"\u003eAutomatic screenshots from terminal\u003c/a\u003e\n\nYou can also take screenshots from the terminal:\n\n```bash\n# Take a screenshot\nam broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD com.github.cvzi.screenshottile\n# Open the area selector for a partial screenshot\nam broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD --ez partial true com.github.cvzi.screenshottile\n```\n\nOr via [adb](https://developer.android.com/tools/adb) from a computer:\n\n```bash\nadb shell am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD com.github.cvzi.screenshottile\n```\n\n# \u003ca name=\"activity\"\u003eAutomatic screenshots with Activity intents\u003c/a\u003e\n\nSome apps can only start an activity and cannot send a broadcast, for example the Motorola AI Key / Red Key (`com.motorola.mykey`), button remapper apps or custom launchers. For those you can use `ScreenshotTriggerActivity`, which takes the same `secret` and `partial` extras as the broadcast intent above.\n\nFirst you have to activate this feature by setting a password in the app settings (the same password as for the broadcast intent).\n\nYou can take screenshots from the terminal:\n\n```bash\n# Take a screenshot\nam start -a com.github.cvzi.screenshottile.TAKE_SCREENSHOT -e secret MY_PASSWORD\n# Open the area selector for a partial screenshot\nam start -a com.github.cvzi.screenshottile.TAKE_SCREENSHOT -e secret MY_PASSWORD --ez partial true\n```\n\nOr via adb from a computer:\n\n```bash\nadb shell am start -a com.github.cvzi.screenshottile.TAKE_SCREENSHOT -e secret MY_PASSWORD\n```\n\nApps that store a launchable intent (like the Motorola AI Key settings) can use an intent URI:\n\n```\nintent:#Intent;action=com.github.cvzi.screenshottile.TAKE_SCREENSHOT;launchFlags=0x10000000;S.secret=MY_PASSWORD;end\n```\n\n## Miscellaneous data\nSome miscellaneous files (mostly images) that don't need to be in the main repository of ScreenshotTile were moved to a separate repository: https://github.com/cvzi/ScreenshotTile_miscellaneous\n\n---\n\n[![updatestar](https://updatestar.cuzi.workers.dev/screenshot-tile-no-root/)](https://screenshot-tile-no-root.updatestar.com/)\n\n[![updatestar](https://www.updatestar.com/img/rating_4stars.png)](https://screenshot-tile-no-root.updatestar.com/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcvzi%2Fscreenshottile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcvzi%2Fscreenshottile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcvzi%2Fscreenshottile/lists"}