A from-scratch Android recreation of BlackBerry's "Productivity Edge" —
a swipeable edge-panel with configurable cards (Calendar, Inbox, App
Widgets, Shortcuts, Contacts, Tasks, Media Control, SMS, Calls, and an
"Active Frames" tile card). No BlackBerry code
is used anywhere; every card talks only to open, documented Android
interfaces (NotificationListenerService, CalendarContract,
ContactsContract, AppWidgetHost, MediaSessionManager, and
JTX Board's open content provider for tasks).
Eine von Grund auf neu geschriebene Nachbildung von BlackBerrys "Productivity Edge" für Android — eine aufziehbare Randleiste mit frei konfigurierbaren Karten. Kein BlackBerry-Code, nur offene Android-Schnittstellen.
- Android 10 or newer (
minSdkVersion29), targettargetSdkVersion34 (Android 14). No BlackBerry device needed. - Läuft ab Android 10 aufwärts (Mindest-SDK 29), Ziel-SDK 34 (Android 14). Kein BlackBerry-Gerät nötig.
- Edge handle: tap or swipe from either screen edge to open the panel; swipe back to close. Visual design matches BlackBerry's original handle.
- Multiple, reorderable tabs: any number of Widget and Shortcuts tabs, each independently named/iconed, each with its own "close on tap" setting.
- Calendar: next 7 days, grouped by day, tap opens the event, floating button opens the system calendar app's own "new event" screen.
- Inbox: reads intercepted notifications from chosen source apps
(works well with BlackBerry Hub, Telegram, Signal, etc.), grouped by day.
Reply (via the notification's own action, with or without inline
RemoteInput text entry), mark-as-read and delete (via the notification's
own actions) all trigger the real action in the source app. A reply you
send stays under the message (building a small history) and is protected
from being overwritten by a source app's "replied" confirmation re-post.
Every notification is stored losslessly (all fields it carried, via the
shared library's
Notifications.toJson), not just its title and one line — so nothing extractable is thrown away. Shows the notification's icon and, for live notifications, the big picture (BigPictureStyle photo/album art). Per source you can tell EdgeTab not to re-fire a delete on a notification that is already gone from the status bar (on by default for the BlackBerry Hub, which otherwise misbehaved on stale delete actions). A magnifier opens a search field: "search here" filters the inbox, "search in Sucher" opens the Sucher app with the term for a full-text search across everything. - SMS & Calls: cards (and optionally inline in the inbox) showing your latest text messages / call log. Calls show the number type from your address book (mobile / work / home …), direction and time, colour-coded (green = connected, red = missed, blue = outgoing-but-not-reached). A short tap places the call (needs the "call" permission, otherwise the dialer opens); a long press opens a menu (call, text, open in contacts, copy number, delete from the call log). SMS group into expandable conversations with inline reply. Both have their own search. Optional, permissions requested on demand.
- App Widgets: embed any installed home-screen widget (e.g. BlackBerry Hub's own inbox widget) directly in the panel. An embedded widget is only driven while its card is actually open, so a disabled tab or a closed panel can't make the source app misbehave; "Remove" fully unbinds the widget.
- Shortcuts: pure app-icon launcher, grouped, grid or list per group.
- Contacts: all / a hand-picked subset / favourites only.
- Tasks: reads (and can check off) tasks from JTX Board, which itself gets them via DAVx⁵/CalDAV from any server.
- Media control: shows and controls active media sessions, with a fixed-position quick-control card (top/middle/bottom, configurable) for reachability with the thumb of the hand holding the phone.
- Permissions card: a dedicated settings card lists every permission the app uses, what it is for, and its status, with a jump to the matching system setting. If a once-granted permission goes missing (e.g. after an OS update), EdgeTab reminds you with a notification that offers to re-grant it or to ignore it. The inbox can also be emptied here. Note: if a permission changes (e.g. an update adds/widens one), you have to revoke and re-grant it once in Android settings, otherwise it stays ineffective.
- Paste on long-press: long-pressing any text field (reply, search …) pastes the clipboard – the floating system selection toolbar often doesn't appear over the overlay window.
- "To top" button: long lists get a second floating round button that jumps to the top; it appears only once you've scrolled, and both floating buttons sit evenly left/right of centre, on whichever screen edge EdgeTab is docked to.
![]() Posteingang |
![]() SMS |
![]() SMS: Suche |
![]() Kalender |
![]() Kontakte |
![]() Aktive Kacheln |
![]() Einstellungen |
![]() Berechtigungen |
No Gradle — this project is built directly with the raw Android SDK command-line tools. You need:
-
Android SDK (
platforms;android-34,build-tools;34.0.0,platform-tools) -
A JDK (11+)
-
Your own signing keystore — none is included in this repository. Create one with
keytool:keytool -genkeypair -v -keystore keystore.p12 -storetype PKCS12 \ -alias mykey -keyalg RSA -keysize 2048 -validity 10000
Then, from the project root:
SDK=/path/to/android/sdk
BT="$SDK/build-tools/34.0.0"
AJAR="$SDK/platforms/android-34/android.jar"
rm -rf build && mkdir -p build/gen build/obj
"$BT/aapt2" compile --dir res -o build/res.zip
"$BT/aapt2" link -o build/base.apk -I "$AJAR" --manifest AndroidManifest.xml \
--java build/gen -R build/res.zip --auto-add-overlay \
--min-sdk-version 29 --target-sdk-version 34
javac --release 11 -d build/obj -classpath "$AJAR" $(find src build/gen -name '*.java')
"$BT/d8" --min-api 29 --lib "$AJAR" --output build/ $(find build/obj -name '*.class')
cp build/base.apk build/unsigned.apk && (cd build && zip -qj unsigned.apk classes.dex)
"$BT/zipalign" -f -p 4 build/unsigned.apk build/aligned.apk
"$BT/apksigner" sign --ks keystore.p12 --ks-type PKCS12 \
--out build/EdgeTab.apk build/aligned.apkBlackBerry discontinued the Productivity Edge feature; this project recreates its spirit for anyone who misses it, using only public Android APIs.
- English: User guide · Flyer
- Deutsch: Anleitung · Werbung
GNU General Public License v3.0 (or later) — see LICENSE.







