ShizuStore

PoGo+LE

Mygod

2.0.0 · GitHub

Download APK
Games Android 9+ 2 months ago Apache-2.0
8 ShizuStore
6.8k GitHub
69 Stars
5 MB Size
Detected trackers (2)
Google CrashLytics Crash reporting
Google Firebase Analytics Analytics

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

More about this app

Skip the pairing dialog when connecting a Pokémon GO Plus

PoGo+LE

Releases Android 9-17

Get it on Obtainium

Automagically skips pairing dialog when connecting Pokémon GO Plus, and alerts you when things go wrong.

Context: Pairing dialog were introduced in November 2020 security patch, for fixing CVE-2020-12856 as discovered by /u/BlueMysticNA.

This project is tested with BrowserStack. See a table of tested compatibility here.

FAQ

Q: How to use it?
A: Install it, launch it, turn on the first switch (optionally turn on the remaining switches and click other buttons) and enjoy! You probably won't need to launch this app ever again.

Q: What do the other two switches do?
A: Those would allow PoGo+LE to post a notification when your device is disconnected, bag is full, storage is full, etc. You can manage these notifications in app settings.

Q: Is this app safe to use?
A: Yes. This app uses AccessibilityService API to help you skip the pairing dialog. Since this app only interacts with Android system interface and system Settings but not the game, PoGo+LE is fully compliant with Niantic's terms of service and is safe to use.

Q: Not working?
A: Feel free to send the following information to me via GitHub issues or else: app version and configuration, device model, Android version, and a screenshot demonstrating the issue. You can also try the Shizuku pairing mode if Shizuku is running on your device.

Q: What does the Xposed Bluetooth workaround do, and how do I enable it?

A: This workaround allows Pokémon GO to connect to a Nintendo Switch while another Bluetooth LE device is already connected by filtering the initial GATT callbacks for pre-existing connections. Enable PoGo+LE in LSPosed and select the system Bluetooth package. LSPosed recommends com.android.bluetooth for AOSP and OEM-derived stacks and com.google.android.bluetooth for Google's Pixel stack. You may select a different package for a vendor ROM: the module has no package allowlist and activates only when that package contains one of the exact supported AOSP GATT implementations.

Q: Why should I use the Shizuku pairing mode?

A: It confirms pairing without the system pop-up. It requires a running Shizuku service and permission for PoGo+LE; if Shizuku is unavailable, Android's normal pairing dialog remains available.

Q: Why should I associate my Bluetooth accessory?

A: On Android 16 and later, a one-time system-approved companion-device association lets PoGo+LE use Android's public API to unpair that accessory from the game notification without system privileges. PoGo+LE uses the association only for unpairing; the pairing assistant and Shizuku pairing mode remain separate features. Repeat the association step for each bonded accessory.

Android platform API inventory

This is a concise audit index of app-owned non-SDK access. API restrictions are updated up to SHA-256 checksum 9102af02fe6ab68b92464bdff5e5b09f3bd62c65d1130aaf85d3296f17d38074. API qualifiers describe when this app uses each member.

Hidden whitelisted APIs:

  • Landroid/bluetooth/BluetoothDevice;->removeBond()Z,sdk,system-api,test-api

Private APIs:

  • Landroid/bluetooth/BluetoothGatt;->mClientIf:I,unsupported
  • (API 28-30) Landroid/bluetooth/BluetoothAdapter;->getBluetoothService(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth;,greylist
  • (API 31+) Landroid/bluetooth/BluetoothAdapter;->getBluetoothService()Landroid/bluetooth/IBluetooth;,blocked
  • Landroid/bluetooth/IBluetooth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetooth;,unsupported
  • (API 28-30) Landroid/bluetooth/IBluetooth;->setPairingConfirmation(Landroid/bluetooth/BluetoothDevice;Z)Z,greylist-max-o
  • (API 31-32 and 35+) Landroid/bluetooth/IBluetooth;->setPairingConfirmation(Landroid/bluetooth/BluetoothDevice;ZLandroid/content/AttributionSource;)Z,blocked
  • (API 33-34) Landroid/bluetooth/IBluetooth;->setPairingConfirmation(Landroid/bluetooth/BluetoothDevice;ZLandroid/content/AttributionSource;Lcom/android/bluetooth/x/com/android/modules/utils/SynchronousResultReceiver;)V,blocked
  • (API 33-34) Lcom/android/bluetooth/x/com/android/modules/utils/SynchronousResultReceiver;->get()Lcom/android/bluetooth/x/com/android/modules/utils/SynchronousResultReceiver;,blocked
  • (API 33-34) Lcom/android/bluetooth/x/com/android/modules/utils/SynchronousResultReceiver;->awaitResultNoInterrupt(Ljava/time/Duration;)Lcom/android/bluetooth/x/com/android/modules/utils/SynchronousResultReceiver$Result;,blocked
  • (API 33-34) Lcom/android/bluetooth/x/com/android/modules/utils/SynchronousResultReceiver$Result;->getValue(Ljava/lang/Object;)Ljava/lang/Object;,blocked

Xposed private APIs:

  • (API 28-36) Lcom/android/bluetooth/gatt/GattService;->onServerRegistered(IIJJ)V
  • (API 28-36) Lcom/android/bluetooth/gatt/GattService;->onClientConnected(Ljava/lang/String;ZII)V
  • (API 28-30) Lcom/android/bluetooth/gatt/GattService;->unregisterServer(I)V
  • (API 31-36) Lcom/android/bluetooth/gatt/GattService;->unregisterServer(ILandroid/content/AttributionSource;)V
  • (API 28-35) Lcom/android/bluetooth/gatt/GattService;->mClientMap:Lcom/android/bluetooth/gatt/GattService$ClientMap;
  • (API 28-35) Lcom/android/bluetooth/gatt/GattService;->mServerMap:Lcom/android/bluetooth/gatt/GattService$ServerMap;
  • (API 36) Lcom/android/bluetooth/gatt/GattService;->mClientMap:Lcom/android/bluetooth/gatt/ContextMap;
  • (API 36) Lcom/android/bluetooth/gatt/GattService;->mServerMap:Lcom/android/bluetooth/gatt/ContextMap;
  • (API 28-36) Lcom/android/bluetooth/gatt/ContextMap;->getById(I)Lcom/android/bluetooth/gatt/ContextMap$App;
  • (API 28-36) Lcom/android/bluetooth/gatt/ContextMap;->getConnectedDevices()Ljava/util/Set;
  • (API 28-36) Lcom/android/bluetooth/gatt/ContextMap$App;->name:Ljava/lang/String;
  • (API 37) Lcom/android/bluetooth/gatt/GattServerManager;->onServerRegisteredFromNative(IILjava/util/UUID;)V
  • (API 37) Lcom/android/bluetooth/gatt/GattServerManager;->onClientConnectedFromNative(Landroid/bluetooth/BluetoothDevice;IZII)V
  • (API 37) Lcom/android/bluetooth/gatt/GattServerManager;->unregisterServer(Landroid/bluetooth/IBluetoothGattServerCallback;)V
  • (API 37) Lcom/android/bluetooth/gatt/GattServerManager;->gatt:Lcom/android/bluetooth/gatt/GattService;
  • (API 37) Lcom/android/bluetooth/gatt/GattServerManager;->getServerMap()Lcom/android/bluetooth/gatt/ContextMap;
  • (API 37) Lcom/android/bluetooth/gatt/GattService;->getClientMap()Lcom/android/bluetooth/gatt/ContextMap;
  • (API 37) Lcom/android/bluetooth/gatt/ContextMap;->getById(I)Lcom/android/bluetooth/gatt/ContextApp;
  • (API 37) Lcom/android/bluetooth/gatt/ContextMap;->getByCallbackId(Landroid/os/IInterface;)Lcom/android/bluetooth/gatt/ContextApp;
  • (API 37) Lcom/android/bluetooth/gatt/ContextMap;->getConnectedDevices()Ljava/util/Set;
  • (API 37) Lcom/android/bluetooth/gatt/ContextApp;->getName()Ljava/lang/String;
  • (API 37) Lcom/android/bluetooth/gatt/ContextApp;->getId()I
Close

How Shizuku is used

Can auto-confirm Pokémon GO Plus pairing and skip the dialog via `IBluetooth.setPairingConfirmation` through 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

Shizuku is used to automatically confirm Bluetooth pairing for Pokémon GO Plus accessories so the system pairing dialog can be skipped.

  • Auto-confirm Bluetooth pairing: when a Pokémon GO Plus pairing request needing consent arrives, the app confirms it on the user's behalf through the privileged Bluetooth service accessed via Shizuku, using shell identity. On success it dismisses the system pairing prompt and notifies the game service of the result.

Android APIs or commands used

  • android.bluetooth.IBluetooth.setPairingConfirmation
  • android.bluetooth.BluetoothAdapter.getBluetoothService
  • android.bluetooth.IBluetooth$Stub.asInterface

Notable details

If the app already holds the privileged Bluetooth permission it confirms pairing directly without Shizuku. If privileged confirmation fails, the normal Android pairing UI is left in place.

Close

Changelog

What's new for version 2.0.0

What's Changed

  • Replaces the old root pairing mode with automatic Bluetooth pairing through system privileges or Shizuku. Existing root-mode and tech-savvy users should switch to Shizuku; the standard accessibility-based pairing assistant remains available as the inferior option.
  • Adds an optional LSPosed/Xposed workaround for connecting Pokémon GO to a Nintendo Switch while another Bluetooth LE device is connected. You can thank Niamtk for their spaghetti code.
  • Adds companion-device association on Android 16+ for unpairing support.
  • Redesigned Material 3 interface.
  • Adds Android 17 support and expands localization to achieve parity with the game.
  • Fixes and background RAM improvements.
  • Bump actions/checkout from 6 to 7 by @dependabot[bot] in https://github.com/Mygod/pogoplusle/pull/63.

New Contributors

Full Changelog: https://github.com/Mygod/pogoplusle/compare/v1.4.0...v2.0.0

Close

Permissions

14 permissions requested

  • android.permission.BLUETOOTH
  • android.permission.BLUETOOTH_ADMIN
  • android.permission.BLUETOOTH_CONNECT
  • android.permission.BLUETOOTH_PRIVILEGED
  • android.permission.POST_NOTIFICATIONS
  • android.permission.INTERNET
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.WAKE_LOCK
  • 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
  • be.mygod.pogoplusplus.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close