diff --git a/res/values/strings.xml b/res/values/strings.xml
index febd5a1d9..4fd2477f4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -100,6 +100,7 @@
+ Run
Install
Uninstall
Website
diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java
index fee83b2ba..5789da616 100644
--- a/src/org/fdroid/fdroid/AppDetails.java
+++ b/src/org/fdroid/fdroid/AppDetails.java
@@ -170,6 +170,7 @@ public class AppDetails extends ListActivity {
private static final int SOURCE = Menu.FIRST + 4;
private static final int MARKET = Menu.FIRST + 5;
private static final int DONATE = Menu.FIRST + 6;
+ private static final int LAUNCH = Menu.FIRST + 7;
private DB.App app;
private int app_currentvercode;
@@ -470,6 +471,8 @@ public class AppDetails extends ListActivity {
menu.add(Menu.NONE, INSTALL, 1, R.string.menu_install).setIcon(
android.R.drawable.ic_menu_add);
} else {
+ menu.add(Menu.NONE, LAUNCH, 1, R.string.menu_launch).setIcon(
+ android.R.drawable. ic_media_play);
menu.add(Menu.NONE, UNINSTALL, 1, R.string.menu_uninstall).setIcon(
android.R.drawable.ic_menu_delete);
}
@@ -500,6 +503,10 @@ public class AppDetails extends ListActivity {
switch (item.getItemId()) {
+ case LAUNCH:
+ launchApk(app.id);
+ return true;
+
case INSTALL:
// Note that this handles updating as well as installing.
curapk = app.getCurrentVersion();
@@ -621,6 +628,11 @@ public class AppDetails extends ListActivity {
((FDroidApp) getApplication()).invalidateApps();
}
+ private void launchApk(String id) {
+ Intent intent = mPm.getLaunchIntentForPackage(id);
+ startActivity(intent);
+ }
+
private ProgressDialog createProgressDialog(String file, int p, int max) {
final ProgressDialog pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);