@Nullable private static String getInstallerPackageName(Context context) { PackageManager packageManager = context.getPackageManager(); if (packageManager != null) { return packageManager.getInstallerPackageName(context.getPackageName()); } return null; }
PackageManager pm = context.getPackageManager(); String installerPackageName = pm.getInstallerPackageName(context.getPackageName()); if ("com.android.vending".equals(installerPackageName)) { //do google things } else if ("com.amazon.venezia".equals(installerPackageName)) { //do amazon things }
@RequiresPermission(Manifest.permission.DELETE_PACKAGES) @Override public String getInstallerPackageName(String packageName) { return mBase.getInstallerPackageName(packageName); }
@Test public void installerPackageName() throws Exception { packageManager.setInstallerPackageName("target.package", "installer.package"); assertThat(packageManager.getInstallerPackageName("target.package")) .isEqualTo("installer.package"); }
final PackageManager packageManager = getPackageManager(); try { final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0); if ("com.android.vending".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) { // App was installed by Play Store } } catch (final NameNotFoundException e) { e.printStackTrace(); }
private boolean install() { String installerPackageName = appCtx.getPackageManager().getInstallerPackageName(appCtx.getPackageName()); // developer. Don't need this functionality (it might even interfere with unit tests) if(installerPackageName == null) return false; // don't need this for google play users: they have their own crash reports if(GOOGLEPLAY.equals(installerPackageName)) return false; Thread.UncaughtExceptionHandler ueh = Thread.getDefaultUncaughtExceptionHandler(); if(ueh instanceof CrashReportExceptionHandler) { throw new IllegalStateException("May not install several CrashReportExceptionHandlers!"); } defaultUncaughtExceptionHandler = ueh; Thread.setDefaultUncaughtExceptionHandler(this); return true; }
@RequiresPermission(Manifest.permission.DELETE_PACKAGES) @Override public String getInstallerPackageName(String packageName) { return mBase.getInstallerPackageName(packageName); }
@Override public String getInstallerPackageName(String packageName) { Log.w(TAG, "getInstallerPackageName() "); return packageManager.getInstallerPackageName(packageName); }
public static String getInstallerPackageName(Context context) { try { return context.getPackageManager().getInstallerPackageName(context.getPackageName()); } catch (Exception e) { // Just return. } return null; }
/** * Verifies if the application was installed using the Google Play Store. * * @param context The application context. * * @return returns a boolean indicating if the application was installed using the Google Play Store. */ private static boolean wasInstalledFromPlayStore(final Context context) { final String installer = context.getPackageManager().getInstallerPackageName(context.getPackageName()); return installer != null && installer.startsWith(PLAY_STORE_PACKAGE); }
/** * http://stackoverflow.com/questions/10809438/how-to-know-an-application-is-installed-from-google-play-or-side-load/16862957#16862957 */ public static boolean isStoreVersion(Context context) { boolean result = false; try { String installer = context.getPackageManager() .getInstallerPackageName(context.getPackageName()); result = !TextUtils.isEmpty(installer); } catch (Throwable e) { /* ignore */ } return result; } }
public static String getInstallerPackageName(String packageName) { final PackageManager pm = RxDroid.getContext().getPackageManager(); return pm.getInstallerPackageName(packageName); }
public App(@NonNull final Context context) { final PackageManager packageManager = context.getPackageManager(); final ApplicationInfo applicationInfo = context.getApplicationInfo(); final PackageInfo packageInfo = getPackageInfo(context); final String installerPackageName = packageManager.getInstallerPackageName(context.getPackageName()); name = applicationInfo.loadLabel(packageManager).toString(); versionName = packageInfo.versionName; versionCode = packageInfo.versionCode; installSource = InstallSource.fromInstallerPackageName(installerPackageName); }
private boolean wasInstalledViaPlaystore() { final String installerPackageName = defaultIfNull(this.getPackageManager().getInstallerPackageName(this.getPackageName()), "Unknown"); Log.i(TAG, format("The package was installed via: {0}", installerPackageName)); return "com.android.vending".equals(installerPackageName); }
@Test public void adbIsNotStore() { when(mPackageManager.getInstallerPackageName(anyString())).thenReturn("adb"); assertFalse(InstallerUtils.isInstalledFromAppStore(LOG_TAG, mContext)); /* Check cache. */ assertFalse(InstallerUtils.isInstalledFromAppStore(LOG_TAG, mContext)); verify(mPackageManager).getInstallerPackageName(anyString()); }
@Test public void anotherLocalInstallerIsNotStore() { when(mPackageManager.getInstallerPackageName(anyString())).thenReturn("com.android.packageinstaller"); assertFalse(InstallerUtils.isInstalledFromAppStore(LOG_TAG, mContext)); /* Check cache. */ assertFalse(InstallerUtils.isInstalledFromAppStore(LOG_TAG, mContext)); verify(mPackageManager).getInstallerPackageName(anyString()); }
@Test public void testInstalledViaADBDefault() { when(mockPackageManager.getInstallerPackageName(any(String.class))).thenReturn(null); // Typically, the installer string for ADB is null assertFalse(UpdateManager.installedFromMarket(contextWeakReference)); // or an empty string when(mockPackageManager.getInstallerPackageName(any(String.class))).thenReturn(""); assertFalse(UpdateManager.installedFromMarket(contextWeakReference)); // Verify this also works on Android Nougat Whitebox.setInternalState(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.N); assertFalse(UpdateManager.installedFromMarket(contextWeakReference)); }
@Test public void nullInstallerIsNotStore() { assertFalse(InstallerUtils.isInstalledFromAppStore(LOG_TAG, mContext)); /* Check cache. */ assertFalse(InstallerUtils.isInstalledFromAppStore(LOG_TAG, mContext)); verify(mPackageManager).getInstallerPackageName(anyString()); }
@Test public void testInstalledViaADBXiaomi() { // On some devices, e.g. Xiaomi devices, launching via USB will return "adb" for the installer when(mockPackageManager.getInstallerPackageName(any(String.class))).thenReturn("adb"); assertFalse(UpdateManager.installedFromMarket(contextWeakReference)); Whitebox.setInternalState(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.N); assertFalse(UpdateManager.installedFromMarket(contextWeakReference)); }
@Test public void testInstalledViaPackageManagerNougat() { // On Android Nougat, installing packages using HockeyApp (using the package manager) will list the following installer identifier when(mockPackageManager.getInstallerPackageName(any(String.class))).thenReturn("com.google.android.packageinstaller"); // When not on Android Nougat this is considered "store" assertTrue(UpdateManager.installedFromMarket(contextWeakReference)); // Test desired behavior on Android Nougat Whitebox.setInternalState(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.N); assertFalse(UpdateManager.installedFromMarket(contextWeakReference)); }