FrankenKeys · verify it yourself

How to check whether your keyboard can reach the internet

Three ways to see whether any Android keyboard holds the INTERNET permission, on the phone, on the Play listing, or with adb, and what each one proves.

This page works for any keyboard, not only this one. It exists because the check most people do proves nothing: the main Permissions screen in Android shows runtime permissions, the ones you get a dialog for, and network access is not one of them. A keyboard that uploads everything and a keyboard that cannot look the same there. The three checks below look one level deeper.

Check one: the phone, about thirty seconds

On a Pixel and on most builds close to stock Android:

  1. Settings, then Apps, then the keyboard. Tap See all apps if it is not in the short list.
  2. Permissions.
  3. The three-dot menu in the corner, then All permissions.

Install-time permissions are listed under Other. An app that can reach the network shows have full network access there. If the line is absent, the operating system will refuse the app a socket, whatever the app's own settings say.

Some manufacturers remove the three-dot menu. If yours has, use check two.

Check two: the Play listing, about a minute

Every Play listing carries a permission list that Google reads from the app's manifest. The developer does not write it and cannot edit it. Google's help page says the list "is based on technical information that describes how the developer's app works", and that it is different from the Data safety section, "which is based on information declared by app developers".

Open the listing in the Play Store app, tap About this app, scroll to App permissions, tap See more. Look under Other for have full network access.

Check three: a cable, a few seconds after setup

With USB debugging on and adb installed:

adb shell dumpsys package studio.forgedev.forgeboard | grep -A 12 "requested permissions"

Replace the package name to check any other keyboard. The block lists what the manifest requests. For FrankenKeys it is five lines, and android.permission.INTERNET is not among them.

N/I

FrankenKeys, all three checks, expected result. Check one: nothing under Other. Check two: nothing under Other. Check three: VIBRATE, RECORD_AUDIO, the AICore bind, BILLING, one private receiver permission. The list with reasons.

Check four, if you want the whole thing

Pull the APK, open it in a free decompiler, read the manifest and the source. FrankenKeys ships unobfuscated so the class names are real. The commands, start to finish, are in Decompile FrankenKeys yourself. Ten minutes the first time.

What each check proves

Checks one to three read the same fact from three places: the manifest's permission list, as installed. They prove what the app cannot do. They do not tell you what an app does with what it keeps on the phone; that is code, and check four is how you read it.

None of the four tells you what Android's own services do after the keyboard commits text to a field, or what the system speech recogniser does with audio on Android 10 and 11. Those are the system's behaviour, and the honest account of the one that touches this keyboard is on the voice typing page.

Why the first screen fools people

Android divides permissions into install-time and runtime. Google's developer documentation: for install-time permissions, "the system automatically grants your app the permissions when the user installs your app". INTERNET is install-time, protection level normal. The Permissions screen you reach in two taps lists the runtime ones, which is why every keyboard with voice typing shows a microphone toggle and no keyboard shows a network toggle. The absence on that screen is universal and means nothing. The absence under All permissions means the socket is refused.

Sources

  • developer.android.com, Manifest.permission: INTERNET, "Allows applications to open network sockets. Protection level: normal".
  • developer.android.com, permissions overview: install-time permissions granted automatically.
  • support.google.com/googleplay/answer/11416267: the Play permission list is derived from the app, the Data safety section is declared by the developer.
  • support.google.com/android/answer/9431959: the Settings, Apps, Permissions path.

Thirty seconds on a phone you already have unlocked. If your phone hides the menu, the Play listing is the same fact from Google's side.