Home » Android » android – Detect if an app is installed from Play store

android – Detect if an app is installed from Play store

Posted by: admin May 14, 2020 Leave a comment

Questions:

I want to check and allow the use of my app just if it has been downloaded from the Play store, and it has not been shared by other user or from any other source. How can I prevent an user to use the app if it has not been downloaded from the Google Play store?

How to&Answers:

This method will check if your app has been installed from the Play Store.

boolean verifyInstallerId(Context context) {
    // A list with valid installers package name
    List<String> validInstallers = new ArrayList<>(Arrays.asList("com.android.vending", "com.google.android.feedback"));

    // The package name of the app that has installed your app
    final String installer = context.getPackageManager().getInstallerPackageName(context.getPackageName());

    // true if your app has been downloaded from Play Store 
    return installer != null && validInstallers.contains(installer);
}

Some days ago I released an Android library, PiracyChecker, that protects your app using some techniques, such as Google Play Licensing (LVL), APK signature protection and installer ID (this one).

Answer:

com.android.vending is the play store package name,

context.packageManager.getInstallerPackageName(context.packageName) gets you the source package name.

Other source such as Huawei App Gallery to download the app. But i am not sure what its package name