Back to Eliza

eliza-android-system-bridge

packages/os/android/system-ui/native/README.md

2.0.13.6 KB
Original Source

eliza-android-system-bridge

Android library that backs the JS BridgeTransport contract declared in ../src/bridge/. Packaged inside the AOSP SystemUI replacement APK and exposes the channels listed in bridge-contract.ts over a single WebView-bound JS interface.

Responsibilities

Only this library is allowed to call AudioManager, ConnectivityManager, TelephonyManager, BatteryManager, and PowerManager. Every privileged action requires the AOSP fork to install the bridge APK as a system-signature app (/system/priv-app/ plus a matching entry in privapp-permissions-*.xml).

JS channelNative binding
eliza.android.wifi.stateConnectivityManager.NetworkCallback + WifiManager.getConnectionInfo
eliza.android.cell.stateTelephonyManager.PhoneStateListener + LISTEN_SIGNAL_STRENGTHS
eliza.android.audio.stateAudioManager.getStreamVolume(STREAM_MUSIC) + STREAM_*_VOLUME_CHANGED
eliza.android.audio.setLevelAudioManager.setStreamVolume(STREAM_MUSIC, …, 0)
eliza.android.audio.setMutedAudioManager.adjustStreamVolume(ADJUST_MUTE / ADJUST_UNMUTE, 0)
eliza.android.battery.statesticky Intent.ACTION_BATTERY_CHANGED + BatteryManager
eliza.android.time.stateIntent.ACTION_TIME_TICK + Calendar.getInstance().timeZone
eliza.android.connectivity.stateConnectivityManager.registerDefaultNetworkCallback
eliza.android.cell.toggleAirplaneModeSettings.Global.AIRPLANE_MODE_ON write (requires WRITE_SECURE_SETTINGS)
eliza.android.power.shutdownPowerManager.shutdown (requires REBOOT + signature)
eliza.android.power.restartPowerManager.reboot(null)
eliza.android.power.sleepPowerManager.goToSleep (requires DEVICE_POWER + signature)
eliza.android.settings.openContext.startActivity(Intent(Settings.ACTION_SETTINGS))
eliza.android.lockscreen.stateKeyguardManager.isDeviceLocked + KeyguardManager.isKeyguardSecure
eliza.android.lockscreen.dismissKeyguardManager.requestDismissKeyguard (foreground activity context only)

Status

Skeleton only. Every method in SystemBridge.kt throws NotImplementedError. Real wiring depends on:

  • A signed system-app build slot in vendor/eliza/.
  • A matching privapp-permissions-ai.elizaos.system.bridge.xml granting REBOOT, DEVICE_POWER, WRITE_SECURE_SETTINGS, and ACCESS_NETWORK_STATE.
  • SELinux policy entries in vendor/eliza/sepolicy/ for the bridge service domain.

The bridge's manifest declares the dangerous permissions only. The signature-level ones above must be granted at build time through the vendor-partition allowlist; declaring them inside this library's AndroidManifest.xml is intentionally not enough.

Build

./gradlew :eliza-android-system-bridge:assembleRelease

(Do not run as part of this scaffold session — the source is here for the AOSP integrator.)