Enable system installer directly on first start if FDroid is a system-app

This commit is contained in:
Dominik Schürmann 2015-05-17 14:39:56 +02:00
parent dbbad1c95c
commit c27d8f6287
2 changed files with 16 additions and 11 deletions

View File

@ -48,6 +48,7 @@ import org.fdroid.fdroid.compat.TabManager;
import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.data.NewRepoConfig; import org.fdroid.fdroid.data.NewRepoConfig;
import org.fdroid.fdroid.installer.InstallIntoSystemDialogActivity; import org.fdroid.fdroid.installer.InstallIntoSystemDialogActivity;
import org.fdroid.fdroid.installer.Installer;
import org.fdroid.fdroid.views.AppListFragmentPagerAdapter; import org.fdroid.fdroid.views.AppListFragmentPagerAdapter;
import org.fdroid.fdroid.views.ManageReposActivity; import org.fdroid.fdroid.views.ManageReposActivity;
import org.fdroid.fdroid.views.swap.ConnectSwapActivity; import org.fdroid.fdroid.views.swap.ConnectSwapActivity;
@ -104,9 +105,14 @@ public class FDroid extends ActionBarActivity {
getContentResolver().registerContentObserver(uri, true, new AppObserver()); getContentResolver().registerContentObserver(uri, true, new AppObserver());
if (Preferences.get().isFirstTime()) { if (Preferences.get().isFirstTime()) {
Intent installIntent = new Intent(this, InstallIntoSystemDialogActivity.class); if (Installer.hasSystemPermissions(this, this.getPackageManager())) {
installIntent.setAction(InstallIntoSystemDialogActivity.ACTION_FIRST_TIME); Preferences.get().setSystemInstallerEnabled(true);
startActivity(installIntent); Preferences.get().setFirstTime(false);
} else {
Intent installIntent = new Intent(this, InstallIntoSystemDialogActivity.class);
installIntent.setAction(InstallIntoSystemDialogActivity.ACTION_FIRST_TIME);
startActivity(installIntent);
}
} }
} }

View File

@ -181,15 +181,14 @@ abstract public class Installer {
} }
public static boolean hasSystemPermissions(Context context, PackageManager pm) { public static boolean hasSystemPermissions(Context context, PackageManager pm) {
int checkInstallPermission = boolean hasInstallPermission =
pm.checkPermission(permission.INSTALL_PACKAGES, context.getPackageName()); (pm.checkPermission(permission.INSTALL_PACKAGES, context.getPackageName())
int checkDeletePermission = == PackageManager.PERMISSION_GRANTED);
pm.checkPermission(permission.DELETE_PACKAGES, context.getPackageName()); boolean hasDeletePermission =
boolean permissionsGranted = (pm.checkPermission(permission.DELETE_PACKAGES, context.getPackageName())
(checkInstallPermission == PackageManager.PERMISSION_GRANTED == PackageManager.PERMISSION_GRANTED);
&& checkDeletePermission == PackageManager.PERMISSION_GRANTED);
return permissionsGranted; return (hasInstallPermission && hasDeletePermission);
} }
public void installPackage(File apkFile) throws AndroidNotCompatibleException { public void installPackage(File apkFile) throws AndroidNotCompatibleException {