From c27d8f6287c167b1c73c76b666a48cdd242e7ed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 17 May 2015 14:39:56 +0200 Subject: [PATCH] Enable system installer directly on first start if FDroid is a system-app --- F-Droid/src/org/fdroid/fdroid/FDroid.java | 12 +++++++++--- .../org/fdroid/fdroid/installer/Installer.java | 15 +++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/F-Droid/src/org/fdroid/fdroid/FDroid.java b/F-Droid/src/org/fdroid/fdroid/FDroid.java index 87581b7f3..bf4f0ffb7 100644 --- a/F-Droid/src/org/fdroid/fdroid/FDroid.java +++ b/F-Droid/src/org/fdroid/fdroid/FDroid.java @@ -48,6 +48,7 @@ import org.fdroid.fdroid.compat.TabManager; import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.NewRepoConfig; import org.fdroid.fdroid.installer.InstallIntoSystemDialogActivity; +import org.fdroid.fdroid.installer.Installer; import org.fdroid.fdroid.views.AppListFragmentPagerAdapter; import org.fdroid.fdroid.views.ManageReposActivity; import org.fdroid.fdroid.views.swap.ConnectSwapActivity; @@ -104,9 +105,14 @@ public class FDroid extends ActionBarActivity { getContentResolver().registerContentObserver(uri, true, new AppObserver()); if (Preferences.get().isFirstTime()) { - Intent installIntent = new Intent(this, InstallIntoSystemDialogActivity.class); - installIntent.setAction(InstallIntoSystemDialogActivity.ACTION_FIRST_TIME); - startActivity(installIntent); + if (Installer.hasSystemPermissions(this, this.getPackageManager())) { + Preferences.get().setSystemInstallerEnabled(true); + Preferences.get().setFirstTime(false); + } else { + Intent installIntent = new Intent(this, InstallIntoSystemDialogActivity.class); + installIntent.setAction(InstallIntoSystemDialogActivity.ACTION_FIRST_TIME); + startActivity(installIntent); + } } } diff --git a/F-Droid/src/org/fdroid/fdroid/installer/Installer.java b/F-Droid/src/org/fdroid/fdroid/installer/Installer.java index 1079f8afa..30e110ba1 100644 --- a/F-Droid/src/org/fdroid/fdroid/installer/Installer.java +++ b/F-Droid/src/org/fdroid/fdroid/installer/Installer.java @@ -181,15 +181,14 @@ abstract public class Installer { } public static boolean hasSystemPermissions(Context context, PackageManager pm) { - int checkInstallPermission = - pm.checkPermission(permission.INSTALL_PACKAGES, context.getPackageName()); - int checkDeletePermission = - pm.checkPermission(permission.DELETE_PACKAGES, context.getPackageName()); - boolean permissionsGranted = - (checkInstallPermission == PackageManager.PERMISSION_GRANTED - && checkDeletePermission == PackageManager.PERMISSION_GRANTED); + boolean hasInstallPermission = + (pm.checkPermission(permission.INSTALL_PACKAGES, context.getPackageName()) + == PackageManager.PERMISSION_GRANTED); + boolean hasDeletePermission = + (pm.checkPermission(permission.DELETE_PACKAGES, context.getPackageName()) + == PackageManager.PERMISSION_GRANTED); - return permissionsGranted; + return (hasInstallPermission && hasDeletePermission); } public void installPackage(File apkFile) throws AndroidNotCompatibleException {