package de.jeisfeld.augendiagnoseunlocker; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; /** * Main activity of the application. */ public class DisplayMessageActivity extends Activity { /** * The package name of the eye diagnosis app. */ private static final String PACKAGE_EYE_DIAGNOSIS = "de.eisfeldj.augendiagnose"; /** * The package name of the Miniris app. */ private static final String PACKAGE_MINIRIS = "de.jeisfeld.miniris"; @Override protected final void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (isMainAppInstalled()) { displayUnlimitedUseMessage(); } else { displayMissingMainAppMessage(); } } /** * Display the message that the main app is required. */ private void displayMissingMainAppMessage() { setContentView(R.layout.dialog_missing_main_app); findViewById(R.id.buttonEyeDiagnosis).setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { openGooglePlay(PACKAGE_EYE_DIAGNOSIS); finish(); } }); findViewById(R.id.buttonMiniris).setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { openGooglePlay(PACKAGE_MINIRIS); finish(); } }); } /** * Display the message that the apps can be used unlimited now. */ private void displayUnlimitedUseMessage() { setContentView(R.layout.dialog_unlimited_use); findViewById(R.id.buttonOk).setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { setEnabled(DisplayMessageActivity.this, false); finish(); } }); } /** * Enable or disable this activity. * * @param context The calling context. * @param enabled true for enabling, false for disabling. */ private static void setEnabled(final Context context, final boolean enabled) { ComponentName componentName = new ComponentName(context, DisplayMessageActivity.class); context.getPackageManager().setComponentEnabledSetting(componentName, enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } /** * Get information if this activity is enabled. * * @param context The calling context. * @return true if enabled. */ protected static boolean isEnabled(final Context context) { ComponentName componentName = new ComponentName(context, DisplayMessageActivity.class); return context.getPackageManager().getComponentEnabledSetting(componentName) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; } /** * Open Google Play to display a certain app. * * @param appPackage The package of the app to be displayed. */ private void openGooglePlay(final String appPackage) { Intent googlePlayIntent = new Intent(Intent.ACTION_VIEW); googlePlayIntent.setData(Uri.parse("market://details?id=" + appPackage)); try { startActivity(googlePlayIntent); } catch (Exception e) { DialogUtil.displayError(this, R.string.message_dialog_failed_to_open_google_play); } } /** * Check if the main app Eye Diagnosis or Miniris is installed. * * @return true if installed. */ private boolean isMainAppInstalled() { return isAppInstalled(PACKAGE_EYE_DIAGNOSIS) || isAppInstalled(PACKAGE_MINIRIS); } /** * Determine if an app is installed. * * @param appPackage the app package name. * @return true if the app is installed. */ private boolean isAppInstalled(final String appPackage) { Intent appIntent = getPackageManager().getLaunchIntentForPackage(appPackage); return appIntent != null; } }