package ca.allanwang.kau.utils import android.content.Context import android.content.pm.PackageManager import android.os.Build /** * Created by Allan Wang on 2017-06-23. */ /** * Checks if a given package is installed * @param packageName packageId * @return true if installed with activity, false otherwise */ @KauUtils fun Context.isAppInstalled(packageName: String): Boolean { try { packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES) return true } catch (e: PackageManager.NameNotFoundException) { return false } } @KauUtils fun Context.isAppEnabled(packageName: String): Boolean { try { return packageManager.getApplicationInfo(packageName, 0).enabled } catch (e: Exception) { return false } } inline val buildIsMarshmallowAndUp: Boolean get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M inline val buildIsLollipopAndUp: Boolean @SuppressWarnings("NewApi") get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP inline val buildIsNougatAndUp: Boolean get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N const val INSTALLER_GOOGLE_PLAY_VENDING = "com.android.vending" const val INSTALLER_GOOGLE_PLAY_FEEDBACK = "com.google.android.feedback" inline val Context.installerPackageName: String? get() = packageManager.getInstallerPackageName(packageName) inline val Context.isFromGooglePlay: Boolean get() { val installer = installerPackageName return arrayOf(INSTALLER_GOOGLE_PLAY_FEEDBACK, INSTALLER_GOOGLE_PLAY_VENDING).any { it == installer } }