ShizuStore

Extendroid

legendsayantan

1.0.5 · GitHub

Download APK
Customization Android 10+ 3 months ago GPL-3.0 Recommended
689 ShizuStore
4k GitHub
701 Stars
65 MB Size
Detected trackers (1)
Google Firebase Analytics Analytics

Matched by Exodus Privacy code signatures. Not a complete list.

More about this app

Adds desktop-like multi-window support on Android for smartphones.

Extendroid

Android Multi-Tasking Manager with desktop-like multi window support.

In this master branch, everything was re-built from scratch. Visit the legacy branch for the old version.

Requirements:

  • Android 10 or newer device
  • Shizuku access
  • Popup window permission on Xiaomi devices

Features:

  • Launch and control any app in popup window
  • Freely move/resize the app windows
  • Minimise app windows but keep apps running
  • Live preview to all minimised apps
  • Keep apps active with screen off
  • Access apps remotely with Extendroid Echo (beta)

Usage:

  1. Download and Install the APK file on your Android device.
  2. Open the app and finish the mentioned setups on the homepage.
  3. Start the control menu from one of these -
    1. Notification
    2. Floating Ball
  4. navigate to one of the following tabs and select app -
    1. ☆ (Recent and Frequent Apps)
    2. + (All Installed Apps)
  5. The Preview tab should load and show your selected app. From here, you can perform the following actions -
    1. Click on the app preview to open the app in popup window
    2. Long press on the app window to fullscreen the app
    3. Click the ◇ button to use the app within preview window.
    4. Long press the ◇ button to close the app.
  6. You can perform the following gestures on a popup window -
    1. Drag the top handle to move the window.
    2. Click on the top handle to reveal/hide these options :
      1. Minimise (return to preview tab)
      2. Maximise
      3. Back
      4. Close
    3. Drag from bottom corners to resize the app window to any size/ aspect ratio you like.
  7. While Preview Tab is selected, enter the three dots dropdown menu to turn your screen off with all apps active.

License

This project is licensed under GNU General Public License v3.0.

Note - You must not distribute this software, whether original or modified, to any platform without the reference to its original source code. Also, publishing to any app stores without permission is forbidden.

Close

How Shizuku is used

Can open apps in floating windows and on remote displays, inject touch and key input, and sleep or wake the screen via Shizuku.

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

Extendroid uses Shizuku to run a privileged service that powers its desktop style multi-window and remote access features.

  • Open apps in windows: chosen apps are launched into popup windows and virtual displays for multi-window use through the privileged service.
  • Close window tasks: apps opened in popups or remote sessions are removed from recents and shut down when windows are minimized, closed or sessions end.
  • Interact inside windows: taps, swipes and key presses performed in a popup or received from a remote viewer are injected into the matching display.
  • Turn off phone screen: the built-in display is switched to a low power mode while content is shown elsewhere, and restored afterward.
  • Sleep and wake device: the device is put to sleep and woken up for remote unlock training and replay, including recording an unlock gesture and replaying it to unlock.
  • Suggest recent apps: recently and frequently used apps are listed to populate the window launcher and app menus.
  • Grant its own permissions: screen capture, notifications and overlay permissions needed for windows and streaming are granted to itself through the privileged service.
  • Calibrate touch for unlock: touchscreen limits and screen size are read to scale a recorded unlock gesture so replay matches the screen.
  • Auto-start for remote access: its own main screen is started through Shizuku when a remote access push arrives so the remote session can connect.

Android APIs or commands used

  • android.app.IActivityManager.startActivityAsUser
  • android.app.ActivityOptions.setLaunchDisplayId
  • android.app.IActivityTaskManager.removeTask
  • android.app.ActivityManager.getRecentTasks
  • android.hardware.input.IInputManager.injectInputEvent
  • android.view.SurfaceControl.setDisplayPowerMode
  • com.android.server.display.DisplayControl.getPhysicalDisplayIds
  • com.android.server.display.DisplayControl.getPhysicalDisplayToken
  • android.os.IPowerManager.goToSleep
  • android.os.IPowerManager.wakeUp
  • android.os.PowerManager.goToSleep
  • android.os.PowerManager.wakeUp
  • android.os.PowerManager.newWakeLock
  • android.content.pm.IPackageManager.grantRuntimePermission
  • IAppOpsService.setMode
  • android.app.UsageStatsManager.queryUsageStats
  • am start
  • getevent -p
  • wm size
  • pm grant
  • appops set
  • input keyevent
Close

Changelog

What's new for version 1.0.5

Build without relying on mediaprojection APIs, for sdk 36. Tasks, Workspaces these dont work yet.

Close

Permissions

19 permissions requested

  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_WIFI_STATE
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.READ_PHONE_STATE
  • android.permission.INTERNET
  • android.permission.POST_NOTIFICATIONS
  • android.permission.WAKE_LOCK
  • com.google.android.c2dm.permission.RECEIVE
  • com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE
  • com.google.android.gms.permission.AD_ID
  • android.permission.ACCESS_ADSERVICES_ATTRIBUTION
  • android.permission.ACCESS_ADSERVICES_AD_ID
  • com.google.android.providers.gsf.permission.READ_GSERVICES
  • dev.legendsayantan.extendroid.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close