Recents in Beach

How to make our Android app become an approved source (e.g known source)

How to make our Android app become an approved source

Android enforces strict security measures when installing apps from sources outside the Google Play Store to protect users from malicious apps. The behavior you’re observing is due to Android treating your app store as an "unknown source." 

Here’s a detailed explanation and possible solutions to the questions:


1. How does Android check whether an app store is a known or unknown source?

Starting with Android 8.0 (Oreo), the process for installing apps from unknown sources changed. Instead of enabling installation from unknown sources system-wide, users must grant permission on a per-app basis. This is how Android determines if a source is trusted:

  • Trusted Source: Apps distributed via the Google Play Store or pre-installed system apps (e.g., Samsung Galaxy Store) are automatically trusted and do not require additional permissions for installing APKs.
  • Unknown Source: Any other app attempting to install APKs is treated as an unknown source unless the user explicitly grants it permission.

When your app store attempts to install an APK, Android checks if the "Install Unknown Apps" permission (REQUEST_INSTALL_PACKAGES) has been granted to your app. If it hasn’t, the system prompts the user with a dialog to enable this permission.


2. Without rooting, is it possible to make our app store an approved source?

Yes, it is possible, but it requires certain conditions to be met. Here are some approaches you can use:

A. Use the "Install Unknown Apps" Permission

1.     Request Permission: When your app store is installed or on the first launch, you can programmatically prompt the user to enable the REQUEST_INSTALL_PACKAGES permission for your app store. Here’s a sample implementation:

Java Code:

Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);

intent.setData(Uri.parse("package:" + getPackageName()));

startActivityForResult(intent, REQUEST_CODE);

2.     User Granting Permission: Once the user grants this permission, your app store will be treated as a trusted source, and the dialog won’t appear for subsequent installations.


B. Pre-Install Your App Store as a System App

If you are working with white-label devices, you may have control over the firmware. By pre-installing your app store as a system app, it will be treated as a trusted source. This requires:

  • Including your app in the device's system partition during firmware development.
  • Ensuring the app has the necessary INSTALL_PACKAGES permission in the system manifest.

System apps are automatically treated as trusted sources and bypass the "unknown sources" dialog.


C. Enterprise Solutions Using Device Policy Management (DPM)

If these devices are managed in an enterprise environment, you can use Android’s Device Policy Manager (DPM) or a Mobile Device Management (MDM) solution to:

1.     Whitelist your app store for APK installations.

2.     Automatically grant permissions like REQUEST_INSTALL_PACKAGES without user interaction.

This approach is ideal for devices in controlled environments (e.g., company-distributed devices).


3. Why Rooting is Not Necessary

Rooting allows modifications to the operating system and bypasses certain restrictions, but it’s unnecessary and not recommended. Android already provides the mechanisms above for creating trusted app stores, particularly for white-label devices or enterprise use cases.


Recommended Approach

  • For User Devices: Use the "Install Unknown Apps" permission. While this requires an initial user action, it aligns with Android’s security guidelines.
  • For White-Label Devices: Pre-install your app store as a system app during the firmware build process to ensure a seamless user experience.

Post a Comment

0 Comments