public static void firstTime(final Context context) { if (Preferences.get().isFirstTime()) { Preferences.get().setFirstTime(false); int isInstalledCorrectly = PrivilegedInstaller.isExtensionInstalledCorrectly(context); switch (isInstalledCorrectly) { case PrivilegedInstaller.IS_EXTENSION_INSTALLED_YES: Preferences.get().setPrivilegedInstallerEnabled(true); break; case PrivilegedInstaller.IS_EXTENSION_INSTALLED_NO: runFirstTime(context); break; case PrivilegedInstaller.IS_EXTENSION_INSTALLED_PERMISSIONS_PROBLEM: case PrivilegedInstaller.IS_EXTENSION_INSTALLED_SIGNATURE_PROBLEM: default: // do nothing } } }
/** 3. Verify that install worked */ private void postInstall() { // hack to get theme applied (which is not automatically applied due to activity's // Theme.NoDisplay ContextThemeWrapper theme = new ContextThemeWrapper(this, FDroidApp.getCurThemeResId()); int isInstalledCorrectly = PrivilegedInstaller.isExtensionInstalledCorrectly(this); String title; String message; final int result; switch (isInstalledCorrectly) { case PrivilegedInstaller.IS_EXTENSION_INSTALLED_YES: title = getString(R.string.system_install_post_success); message = getString(R.string.system_install_post_success_message); result = Activity.RESULT_OK; // enable system installer on installation success Preferences.get().setPrivilegedInstallerEnabled(true); break; case PrivilegedInstaller.IS_EXTENSION_INSTALLED_NO: title = getString(R.string.system_install_post_fail); message = getString(R.string.system_install_post_fail_message); result = Activity.RESULT_CANCELED; break; case PrivilegedInstaller.IS_EXTENSION_INSTALLED_SIGNATURE_PROBLEM: title = getString(R.string.system_install_post_fail); message = getString(R.string.system_install_post_fail_message) + "\n\n" + getString(R.string.system_install_denied_signature); result = Activity.RESULT_CANCELED; break; case PrivilegedInstaller.IS_EXTENSION_INSTALLED_PERMISSIONS_PROBLEM: title = getString(R.string.system_install_post_fail); message = getString(R.string.system_install_post_fail_message) + "\n\n" + getString(R.string.system_install_denied_permissions); result = Activity.RESULT_CANCELED; break; default: throw new RuntimeException("unhandled return"); } AlertDialog.Builder builder = new AlertDialog.Builder(theme) .setTitle(title) .setMessage(message) .setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { InstallExtensionDialogActivity.this.setResult(result); InstallExtensionDialogActivity.this.finish(); startActivity(new Intent(InstallExtensionDialogActivity.this, FDroid.class)); } }) .setCancelable(false); builder.create().show(); }