Add an app picker for targets that can't report themselves

Auto-discovery only works for apps that can see Veil: on Android 11+ an
app without QUERY_ALL_PACKAGES (or a matching <queries>) can't resolve
Veil's provider, so its first-launch check-in silently fails. A real app hit this: scoped and hooked, but never listed. That made 615f000's premise,
that auto-detection covers every target, wrong.

- "Add app" opens a searchable list of launchable apps; picking one saves
  its default feature set, which is what gives an app a card. A
  launcher-intent <queries> is enough for this and narrower than
  QUERY_ALL_PACKAGES; it widens what Veil sees, not who sees Veil.
- App cards show the app's label above the package name.
- reportScoped checks resolveContentProvider first and skips the call
  when Veil isn't visible. That also drops the framework's
  "Failed to find provider info for space.bdeshi.veil.provider" line,
  which named Veil in the target's own, app-readable logcat.
- New help tip explains why a scoped app may not show up.

Verified on device (Android 16, Vector): a scoped app no longer logs the
provider failure, and adding it through the picker saves its feature set.

Co-Authored-By: agent <agent@bdeshi.space>
This commit is contained in:
bdeshiandagent committed 2026-11-03 18:54:13 +06:00
1 parent 6dfb0d5779
commit af97a85c54
3 files changed
+132 -6

No files matched your search

+10
View File
@@ -1,5 +1,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Lets the "Add app" picker list launchable apps, including ones that can't see Veil
and so never reach its discovery provider. This only widens what Veil can see; it
doesn't make Veil any more visible to the apps it hides things from. -->
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent>
</queries>
<application
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"