diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/DownloadOrInstallFragment.java b/app/src/main/java/com/github/yeriomin/yalpstore/DownloadOrInstallFragment.java index 8c0f4a0a0..96f165552 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/DownloadOrInstallFragment.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/DownloadOrInstallFragment.java @@ -4,6 +4,7 @@ import android.Manifest; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; @@ -48,12 +49,16 @@ public class DownloadOrInstallFragment extends DetailsFragment { private void drawDownloadButton() { Button downloadButton = (Button) activity.findViewById(R.id.download); - downloadButton.setText(apkPath.exists() ? R.string.details_install : R.string.details_download); - downloadButton.setEnabled(apkPath.exists() || app.isInPlayStore()); + downloadButton.setText(getDownloadButtonText()); downloadButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (app.getVersionCode() == 0 && !(activity instanceof ManualDownloadActivity)) { + if (isLatestVersion()) { + Intent launchIntent = getLaunchIntent(); + if (null != launchIntent) { + activity.startActivity(launchIntent); + } + } else if (app.getVersionCode() == 0 && !(activity instanceof ManualDownloadActivity)) { activity.startActivity(new Intent(activity, ManualDownloadActivity.class)); } else if (checkPermission()) { downloadOrInstall(); @@ -64,6 +69,33 @@ public class DownloadOrInstallFragment extends DetailsFragment { }); } + private int getDownloadButtonText() { + int stringId = R.string.details_download; + if (isLatestVersion() && null != getLaunchIntent()) { + stringId = R.string.details_run; + } else if (apkPath.exists()) { + stringId = R.string.details_install; + } + return stringId; + } + + private boolean isLatestVersion() { + try { + return activity.getPackageManager().getPackageInfo(app.getPackageName(), 0).versionCode == app.getVersionCode(); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + } + + private Intent getLaunchIntent() { + Intent i = activity.getPackageManager().getLaunchIntentForPackage(app.getPackageName()); + if (i == null) { + return null; + } + i.addCategory(Intent.CATEGORY_LAUNCHER); + return i; + } + public void unregisterReceivers() { if (null != downloadReceiver) { activity.unregisterReceiver(downloadReceiver); diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 6718b5de5..9c8a7d822 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -80,6 +80,7 @@ Разрешения: "Версия %1$s" "Версия %1$s → %2$s" + Запустить Скачать Установить Удалить diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 590e7ddb4..83ebc7e0e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -79,6 +79,7 @@ Permissions: "Version %1$s" "Version %1$s → %2$s" + Run Download Install Uninstall