Quick answer: get the APK onto the phone (download link, QR code, email, USB), tap the file, allow the app you opened it from to install unknown apps when Android asks, tap Install anyway if Play Protect warns about an unknown developer, and tap Install. It takes about fifteen seconds. "App not installed" means an older version with a different signature or a higher version code is already there — uninstall it and try again.
Step 1 — Get the file onto the phone
- Download link. Upload the APK anywhere with a direct link — your site, a GitHub release, cloud storage in direct-download form — and open the link in the phone's browser. The QR maker turns the link into a scannable code and prints an instruction card.
- Email or chat. Attach the APK; Gmail blocks .apk attachments, so zip it first or use a link. WhatsApp and Telegram send APKs as documents.
- USB. Copy it to the phone's Downloads folder, then open it from the Files app.
- Nearby Share / Quick Share. From another Android or a Windows PC.
Step 2 — Open it and allow the source
Tap the downloaded file (from the browser's download notification, or from Files → Downloads). The first time, Android says the source app is not allowed to install unknown apps and offers Settings. Tap it, turn on Allow from this source, and go back — the install dialog is waiting. This permission is per app: allowing Chrome does not allow Gmail.
| Android | Where the switch lives |
|---|---|
| 8 – 15 (stock, Pixel) | Settings → Apps → Special app access → Install unknown apps → choose the app → Allow |
| Samsung One UI | Settings → Apps → ⋮ → Special access → Install unknown apps |
| Xiaomi / MIUI / HyperOS | Settings → Privacy protection → Special permissions → Install unknown apps; MIUI may also show a 10-second wait |
| Android 7 and older | Settings → Security → Unknown sources (one global switch) |
Step 3 — Play Protect
Android may show "Unsafe app blocked" or "This app is from an unknown developer". Tap More details → Install anyway. On Android 14+ the wording is occasionally "Scan app?" — either choice works. Play Protect is reacting to an app that did not arrive through the Play Store and whose signing key it has not catalogued; every sideloaded app gets this until it is widely installed. Once installed, the app is scanned like any other.
Step 4 — Install
Tap Install. A few seconds later, Open. The icon is in the app drawer and the app behaves like any other: it appears in Settings → Apps, receives no automatic updates (you install new APKs the same way), and uninstalls from the icon's long-press menu.
"App not installed" and other refusals
| Message | Cause | Fix |
|---|---|---|
| App not installed | An app with the same package name is already installed with a different signature, or the same/lower versionCode | Uninstall the existing one, then install |
| App not installed as package appears to be invalid / conflicts | Same as above, or a corrupted download | Re-download; uninstall the old version |
| Parse error / There was a problem parsing the package | Incomplete download, or a very old Android below the app's minimum (7.0) | Download again; check the Android version |
| Blocked by Play Protect (no Install anyway) | Rare; corporate device policy or a Play Protect setting | Play Store → profile → Play Protect → settings → turn off scanning temporarily; or the device is managed and cannot sideload |
| Nothing happens when tapping the file | The download saved as .zip or the browser opened it as text | Rename to .apk; open from the Files app instead of the browser |
Installing on many devices
For a classroom, a shop floor or a fleet, a QR code on a printed card scales better than emailing. For larger deployments, an MDM (mobile device management) tool can push the APK silently, and Google Play's private apps (managed Google Play) distributes to an organisation's devices without a public listing — the Play guide mentions the route.