From 234b39acb75157331f8f750a9f8c0b7cf6cbb2fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Mon, 15 Jul 2013 15:37:24 +0200 Subject: [PATCH 1/3] Add support for fdroid://details?id=app.id uris Also, launch them from inside AppDetails directly --- AndroidManifest.xml | 23 ++++++++++++++++------- src/org/fdroid/fdroid/AppDetails.java | 8 +++++++- src/org/fdroid/fdroid/FDroid.java | 7 +------ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c5ea5b12a..0dfe06b06 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -38,13 +38,6 @@ - - - - - - - + @@ -63,6 +57,21 @@ + + + + + + + + + + + + + + + diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index dcc2f81bb..5d041d496 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -192,7 +192,13 @@ public class AppDetails extends ListActivity { appid = ""; Uri data = getIntent().getData(); if (data != null) { - appid = data.getEncodedSchemeSpecificPart(); + if (data.isHierarchical()) + // fdroid://details?id=app.id + // market://details?id=app.id + appid = data.getQueryParameter("id"); + else + // fdroid.app:app.id (old scheme) + appid = data.getEncodedSchemeSpecificPart(); Log.d("FDroid", "AppDetails launched from link, for '" + appid + "'"); } else if (!i.hasExtra("appid")) { diff --git a/src/org/fdroid/fdroid/FDroid.java b/src/org/fdroid/fdroid/FDroid.java index fb871c7e0..bb7f3ac70 100644 --- a/src/org/fdroid/fdroid/FDroid.java +++ b/src/org/fdroid/fdroid/FDroid.java @@ -83,12 +83,7 @@ public class FDroid extends FragmentActivity { setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); Intent i = getIntent(); - Uri data = i.getData(); - if (data != null && data.getScheme().equals("market")) { - Intent call = new Intent(this, AppDetails.class); - call.putExtra("appid", data.getQueryParameter("id")); - startActivityForResult(call, REQUEST_APPDETAILS); - } else if (i.hasExtra("uri")) { + if (i.hasExtra("uri")) { Intent call = new Intent(this, ManageRepo.class); call.putExtra("uri", i.getStringExtra("uri")); startActivityForResult(call, REQUEST_MANAGEREPOS); From 89f8630f12a8df4533b124b65e91394432b5c0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Mon, 15 Jul 2013 16:49:03 +0200 Subject: [PATCH 2/3] Add share (via fdroid://details?id=app.id) button --- res/values/strings.xml | 1 + src/org/fdroid/fdroid/AppDetails.java | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 9be6ec288..d9ade7be9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -108,6 +108,7 @@ Run + Share Install Uninstall Website diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index 5d041d496..3d6574d9e 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -163,6 +163,7 @@ public class AppDetails extends ListActivity { 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 static final int SHARE = Menu.FIRST + 8; private DB.App app; private int app_currentvercode; @@ -558,10 +559,13 @@ public class AppDetails extends ListActivity { android.R.drawable.ic_menu_delete)); if (mPm.getLaunchIntentForPackage(app.id) != null) { - toShow.add(menu.add( Menu.NONE, LAUNCH, 1, R.string.menu_launch ).setIcon( + toShow.add(menu.add( Menu.NONE, LAUNCH, 1, R.string.menu_launch).setIcon( android.R.drawable.ic_media_play)); } } + toShow.add(menu.add( Menu.NONE, SHARE, 1, R.string.menu_share).setIcon( + android.R.drawable.ic_menu_share)); + if (app.detail_webURL.length() > 0) { menu.add(Menu.NONE, WEBSITE, 2, R.string.menu_website).setIcon( android.R.drawable.ic_menu_view); @@ -608,6 +612,10 @@ public class AppDetails extends ListActivity { launchApk(app.id); return true; + case SHARE: + shareApp(app); + return true; + case INSTALL: // Note that this handles updating as well as installing. curapk = app.getCurrentVersion(); @@ -734,6 +742,16 @@ public class AppDetails extends ListActivity { startActivity(intent); } + private void shareApp(DB.App app) { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + + shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, app.name); + shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "fdroid://details?id="+app.id); + + startActivity(Intent.createChooser(shareIntent, getString(R.string.menu_share))); + } + private ProgressDialog createProgressDialog(String file, int p, int max) { final ProgressDialog pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); From 77449ac1652f151df07dfdcbf6709f8f99cc8c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Mon, 15 Jul 2013 23:02:53 +0200 Subject: [PATCH 3/3] Revert "Disable scrollbars altogether on the three main tabs" This reverts commit c78ff5df303689341ea040847d5d2c53b56c9533. --- src/org/fdroid/fdroid/views/fragments/AppListFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/fdroid/fdroid/views/fragments/AppListFragment.java b/src/org/fdroid/fdroid/views/fragments/AppListFragment.java index 6e73824a9..249b2f438 100644 --- a/src/org/fdroid/fdroid/views/fragments/AppListFragment.java +++ b/src/org/fdroid/fdroid/views/fragments/AppListFragment.java @@ -49,7 +49,7 @@ abstract class AppListFragment extends Fragment implements AdapterView.OnItemCli protected ListView createAppListView() { ListView list = new ListView(getActivity()); - list.setVerticalScrollBarEnabled(false); + list.setFastScrollEnabled(true); list.setOnItemClickListener(this); list.setAdapter(getAppListAdapter()); return list;