HOME

PERMISSIONS

LAST UPDATED: SEPTEMBER 2026

PipStats measures how you use this device: how long each app spends in the foreground, how often it is opened, how much network traffic it moves, and how much battery it costs you. All of that is read from Android's own usage APIs and written to a local database on the device. There is no server, no account and no analytics, so none of it is ever uploaded — see the Privacy Policy.

This page lists every permission in the installed package, what it is for, and how to grant the ones Android will not grant automatically.

1. Permissions the app requests

PermissionWhat it is used forRequired?
PACKAGE_USAGE_STATS
"Usage access"
The core of the app. Reads per-app foreground time and launch counts from UsageStatsManager, and per-app network bytes from NetworkStatsManager. Everything on the SYSTEM tab and every per-app battery estimate is derived from it. Yes — without it the statistics screens are empty.
FOREGROUND_SERVICE
FOREGROUND_SERVICE_SPECIAL_USE
Keeps measurement running while the app is closed. Android only holds a few days of usage history, so the service samples it into the local database before it expires. The specialUse subtype is declared as continuous on-device battery and app-usage measurement; no standard service type covers passive telemetry of the device itself. Yes — without it history has gaps whenever the app is closed.
POST_NOTIFICATIONS Shows the ongoing notification for that service. It is the only indication that monitoring is running, which is why the app asks for it rather than running invisibly. Yes on Android 13+ — otherwise the service runs with its notification suppressed.
RECEIVE_BOOT_COMPLETED Restarts monitoring after a reboot. Without it the service stays down until you next open the app, leaving a hole in the history. Yes, for uninterrupted history.
INTERNET Read-only RPC calls to public Solana endpoints, used only by the VAULT tab to show balances and token holdings for an address you connect, and to submit a tip transaction you signed yourself. No usage or battery data is sent. Only for the wallet features. Statistics work offline.

2. Permissions added by libraries, not by the app

Two entries in the package's permission list come from dependencies through Android's manifest merger. The app never calls them directly.

PermissionSourceEffect
ACCESS_NETWORK_STATE com.solanamobile:mobile-wallet-adapter-clientlib-ktx Normal-level. Lets the wallet library check whether a connection exists before attempting an RPC call.
com.pipstats.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION Generated by androidx.core A signature-level permission the app defines for itself, so that broadcast receivers registered at runtime are not reachable by other apps. It grants nothing outside this package.

3. Things that need no permission at all

Worth stating, because people reasonably expect otherwise:

4. Permissions removed

Earlier builds declared four permissions that this version no longer requests. They are listed here so the change is verifiable rather than merely claimed:

5. How to grant them

Exact wording differs between manufacturers; the order below is the order you will meet them.

A. USAGE ACCESS — required

Android does not offer a pop-up for this one, so it cannot be requested from inside the app. The GRANT ACCESS button only opens the right Settings screen; the switch itself has to be flipped there.

Settings › Apps › Special app access › Usage access › PipStats › Permit usage access

On some skins the same screen is at Settings › Security & privacy › More › Special app access, or Settings › Privacy protection › Special permissions. Searching Settings for "usage access" finds it on every build.

Without it: the SYSTEM tab stays empty, per-app battery estimates cannot be produced, and per-app network figures are unavailable.

If the switch will not move

This is the step almost everyone gets stuck on, and it is not the app's doing. When Android decides an install came from outside an app store — an APK opened from a browser or a file manager — it puts Usage access behind a block called restricted settings. The switch looks normal but does nothing, and tapping it shows:

"App was denied access — Access to this permission can put your personal and financial info at risk."

Nothing is wrong with the permission or the app; Android wants one deliberate step first:

  1. Go to Settings › Apps › PipStats. (In the app, the setup guide has an OPEN APP INFO button that lands here.)
  2. Tap the three dots ⋮ in the top-right corner.
  3. Choose Allow restricted settings. On some builds it is Allow restricted setting, singular.
  4. Go back to Usage access and flip the switch — it now works.

If the three-dot menu has no such entry, this install is not restricted and the switch should already work; check that you are looking at PipStats and not a similarly named row.

Every app that measures screen time needs this same switch, so the block is worth knowing about beyond this one app.

B. NOTIFICATIONS — required on Android 13+

Asked once as a standard system dialog on first launch. If it was dismissed or denied:

Settings › Apps › PipStats › Notifications › Allow notifications

Without it: monitoring still runs, but its ongoing notification is hidden, so nothing tells you whether collection is active.

C. BATTERY OPTIMIZATION — optional

Android's power management can stop background services. Exempting PipStats keeps measurement continuous on devices that are aggressive about it.

Settings › Apps › Special app access › Battery optimization › All apps › PipStats › Don't optimize

Without it: everything works, but on some hardware the background service is killed and the usage history gains gaps.

D. AUTOSTART — optional, some manufacturers only

Xiaomi/Redmi (MIUI, HyperOS), Huawei/Honor, Oppo, Realme, Vivo and iQOO add their own autostart switch on top of Android's. It is usually under Security › Permissions › Autostart or Settings › Apps › PipStats › Allow auto-launch.

Without it: monitoring does not come back by itself after a reboot until you open the app.

6. Revoking

Usage access can be switched off again at any time on the same Settings screen; the app keeps running, it simply stops collecting. To delete what was already collected, use RESET STATS in the app, or uninstall it — the database lives in the app's private storage and goes with it.

7. Questions

Open an issue at https://github.com/ShevchukIhor/PipStats.