CleanShare

Xposed module that removes Direct Share's suggested contact/conversation shortcuts from Android's Share Sheet.

Android CI
Kotlin
Android

Direct Share targets row removed

About

Direct Share suggests contacts you emailed once five years ago, colleagues from jobs you no longer have, and people you'd rather not be reminded of. The suggestions are rarely useful. I've yet to hit a case where they helped. Might as well cut the row and skip the hassle.

CleanShare tricks the Share Sheet into thinking it's running on a low-RAM device. Android then skips the Direct Share pipeline to save resources, so the row never loads.

On devices with Android System Intelligence, it also blocks backend shortcut queries to prevent share target profiling.

Features

  • Hide Direct Share suggestions from the share sheet
  • Block share target profiling via Android System Intelligence
  • Hide Quick Share / Nearby Share from share sheet results
  • Delete shared screenshots after sharing with configurable delay (root required)
  • Move to trash or permanently delete
  • Built-in settings app with Material 3 UI

Requirements

  • Android 11 (API 30) or higher
  • An LSPosed Manager version with API 101 support (required for now)
  • Pixel or AOSP-based ROM (Other OEMs are untested)

Installation

  1. Download the APK:

    Get it on F-Droid
    Get it on IzzyOnDroid
    Get it on GitHub
    Get it on Obtainium

  2. Install and enable the module in LSPosed.

  3. Configure the scope:

    Android 13+

    • Intent Resolver (com.android.intentresolver)
    • Android System Intelligence (com.google.android.as)

    Android 11-12

    • System Framework (android)
    • Android System Intelligence (com.google.android.as)
  4. Reboot your device.

System Framework is only needed if you use the delete-after-share feature. The module checks your Android version and only applies what's needed.

FAQ

What does "Move to trash" do?

It uses Android's standard MediaStore trash.
The file gets flagged as trashed but stays on disk for 30 days before Android auto-removes it.
You can recover it from the trash in Google Photos, Files by Google, or any gallery app that
supports MediaStore trash.

Why doesn't the checkbox appear after editing a screenshot?

When you edit a screenshot, the editor creates a temporary copy with a different filename. The
module tries to find the original screenshot by querying
MediaStore for recent
files in your Screenshots folder, but it depends on the filename matching a configurable pattern.
If your device uses a non-standard naming convention, it may not find a match. You can adjust
the pattern in settings.

Why is there a delay before deletion?

The receiving app needs time to process the shared file. If the file is deleted immediately,
the share may fail. The delay is configurable in settings.

Does Quick Share filtering work on all devices?

It targets the standard AOSP
IntentResolver
package. Some OEMs (e.g. HyperOS) use heavily modified share sheets with different packages
and are currently unsupported.

Quick Share still appears when sharing from app X

Some apps (e.g. Firefox) implement their own custom share sheet instead of using Android's native
one. CleanShare can only hook the system share sheet (com.android.intentresolver). If an app
rolls its own, there's nothing the module can do about it.

Do I need root for all features?

No. Direct Share hiding and Quick Share filtering work without root. Only the delete-after-share
feature requires root because it needs to modify MediaStore entries and delete files outside the
app's storage sandbox.

Build

git clone --recurse-submodules https://github.com/hxreborn/cleanshare.git
cd cleanshare
./gradlew buildLibxposed
./gradlew assembleRelease

Requires JDK 21 and Android SDK. Configure local.properties:

sdk.dir=/path/to/android/sdk

# Optional signing
RELEASE_STORE_FILE=<path/to/keystore.jks>
RELEASE_STORE_PASSWORD=<store_password>
RELEASE_KEY_ALIAS=<key_alias>
RELEASE_KEY_PASSWORD=<key_password>

License

GPLv3

This project is licensed under the GNU General Public License v3.0. See LICENSE for details.

Releases

v3.0.0

Stable

3/18/2026, 4:47:16 PM

What's Changed

๐Ÿš€ Added

  • 8e3296b - Migrate to libxposed API 101 [breaking] by @hxreborn in #18

    Migrates from libxposed API 100 to 101. API 100 will no longer be supported once 101 is officially released. An LSPosed Manager with API 101 support may not be publicly available yet.

๐Ÿ› Fixed

  • b39f54a - (ui) Prevent text wrapping in segmented buttons by @hxreborn

    • Shorten "Permanently delete" label to "Delete"
    • Add maxLines=1 with ellipsis to SegmentedPreferenceItem

Assets

1

v2.1.0

Stable

2/27/2026, 7:03:40 AM

What's Changed

๐Ÿš€ Added

  • f239675 - (deletion) Add trash as alternative to permanent delete by @hxreborn

    Add new mode to move screenshots to trash alongside permanent delete. Defaults to trash.

  • d22edd1 - (hook) Detect edited screenshots via IPC resolution by @hxreborn

    Add async method to detect recently edited screenshots so they're offered to delete.

๐Ÿ› Fixed

  • 47f23df - (hook) Skip trashed files in screenshot detection by @hxreborn

  • 4ad0b1f - (hook) Reset share session state on each chooser open by @hxreborn

    Prevent stale deletion state from leaking into subsequent share sessions.

โ™ป๏ธ Changed

  • 9cfcc45 - (quickshare) Gate debug logs behind BuildConfig.DEBUG by @hxreborn

    Revert verbose diagnostic logging from hook mechanism. All QuickShareFilterHooker logs now use debugLog which only emits in debug builds. Removed unused findMethodsByName and formatMethodSig utilities.

  • a5231d9 - (ui) Improve preference summaries by @hxreborn

  • 21a5d16 - (ui) Replace deletion mode dialog with segmented buttons by @hxreborn

Assets

1

v2.0.3

Stable

2/23/2026, 7:55:40 PM

โœจ New Features

  • ece191d - icon: add monochrome layer for Material You themed icons (commit by @hxreborn)

๐Ÿ› Bug Fixes

  • 119fb1a - Fix Direct Share silently failing on ColorOS (thanks @asdfmonster261 for testing) (commit by @hxreborn)
  • afcea3f - build: revert AGP 8.12.2 and restore lifecycle-viewmodel-compose for reproducible builds (commit by @hxreborn)

๐Ÿ”ง Chores

Assets

1

v2.0.2

Stable

2/22/2026, 8:04:23 PM

๐Ÿ› Bug Fixes

  • d842cb1 - hook: revert R8 rule that stripped null checks, breaking direct share (commit by @hxreborn)

๐Ÿ”ง Chores

Assets

1

v2.0.1

Stable

2/21/2026, 10:44:46 AM

๐Ÿ› Bug Fixes

  • 52d893d - support KernelSU/APatch for auto-delete root detection (commit by @hxreborn)
  • bdf2d7c - licenses scrollbar ignoring app bar and add nav transitions (commit by @hxreborn)

โšก Performance Improvements

๐Ÿ”ง Chores

Assets

1

v2.0.0

Stable

2/20/2026, 7:06:42 PM

โœจ New Features

๐Ÿ› Bug Fixes

๐Ÿ”ง Chores

Assets

1