CleanShare
Xposed module that removes Direct Share's suggested contact/conversation shortcuts from Android's Share Sheet.
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
- Filter share targets: hide selected apps, or show only the ones you pick
- Delete shared screenshots after sharing with configurable delay (root required)
- Move to trash or permanently delete
- Status card showing whether the module is active and which framework runs it
- Add the share sheet to the module’s scope from the app when it’s missing
- Light, dark or system theme, with dynamic color on Android 12+
- About screen with What’s new, the full changelog and a bug report link
- Built-in settings app with Material 3 UI
Requirements
- Android 11 (API 30) or higher
- An Xposed manager with libxposed API 101 support, such as Vector 2.1 or newer
- Pixel or AOSP-based ROM (Other OEMs are untested)
Installation
-
Download the APK:

-
Install and enable the module in your Xposed manager.
-
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)
-
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 https://github.com/hxreborn/cleanshare.git
cd cleanshare
./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

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