How petercxy/shelter works
Shelter is an Android app for managing an isolated Work Profile: the user provisions the profile, browses its apps, and can install or clone apps and freeze or unfreeze them. MainActivity coordinates profile services, while ShelterService exposes profile operations and DummyActivity handles operations requiring an activity result. The README also documents automatic freezing and cross-profile file access. These links use the README, tree, and sampled excerpts; some subsystem wiring is inferred only where explicitly supported by those sources.
Main entry points: MainActivity.java Main activity · DummyActivity.java Operation activity · ShelterService.java Profile service · SettingsManager.java Settings manager
Components 17
Profile setup
- Setup wizard
app/src/main/java/net/typeblog/shelter/ui/SetupWizardActivity.java
App management
- Main activity
app/src/main/java/net/typeblog/shelter/ui/MainActivity.java - Operation activity
app/src/main/java/net/typeblog/shelter/ui/DummyActivity.java - Work app list
app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java - App list adapter
app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java
Profile services
- Profile service
app/src/main/java/net/typeblog/shelter/services/ShelterService.java - Service IPC
app/src/main/aidl/net/typeblog/shelter/services/IShelterService.aidl - Device policy APIs
- Auto-freeze service
app/src/main/java/net/typeblog/shelter/services/FreezeService.java - Service cleanup
app/src/main/java/net/typeblog/shelter/services/KillerService.java - Local preferences
app/src/main/java/net/typeblog/shelter/util/LocalStorageManager.java - Settings manager
app/src/main/java/net/typeblog/shelter/util/SettingsManager.java
Cross-profile features
- Cross-profile documents
app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java - File shuttle
app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java - Payment stub
app/src/main/java/net/typeblog/shelter/services/PaymentStubService.java
Other components
- User
- Android system
Connections 24
- User → Main activity: opens
- User → Setup wizard: starts setup
- Setup wizard → Android system: requests provisioning
- Main activity → Profile service: binds services
- Main activity → Work app list: shows apps
- Work app list → Service IPC: invokes
- Service IPC → Profile service: dispatches IPC
- Work app list → App list adapter: renders apps
- Profile service → Device policy APIs: queries profile
- Profile service → Operation activity: launches install
- Operation activity → Android system: performs install
- Operation activity → Device policy APIs: hides apps
- Main activity → Operation activity: starts work actions
- Auto-freeze service → Device policy APIs: freezes apps
- Auto-freeze service → Android system: receives screen lock
- Main activity → Service cleanup: starts cleanup
- Service cleanup → Profile service: stops services
- Settings manager → Local preferences: reads and writes
- Settings manager → Android system: toggles components
- Operation activity → Settings manager: applies settings
- Cross-profile documents → File shuttle: bridges file access
- File shuttle → Android system: reads files
- Settings manager → Payment stub: enables component
- Payment stub → Android system: handles APDU