diff --git a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java index 0a862ea9b..e3a47464a 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java @@ -75,6 +75,8 @@ public class RepoDetailsActivity extends AppCompatActivity { private long repoId; private View repoView; + private String shareUrl; + /** * Help function to make switching between two view states easier. * Perhaps there is a better way to do this. I recall that using Adobe @@ -205,6 +207,7 @@ public class RepoDetailsActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { + Intent intent; switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); @@ -213,9 +216,15 @@ public class RepoDetailsActivity extends AppCompatActivity { promptForDelete(); return true; case R.id.menu_enable_nfc: - Intent intent = new Intent(this, NfcNotEnabledActivity.class); + intent = new Intent(this, NfcNotEnabledActivity.class); startActivity(intent); return true; + case R.id.action_share: + intent = new Intent(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, shareUrl); + startActivity(Intent.createChooser(intent, + getResources().getString(R.string.share_repository))); } return super.onOptionsItemSelected(item); @@ -224,6 +233,7 @@ public class RepoDetailsActivity extends AppCompatActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { prepareNfcMenuItems(menu); + prepareShareMenuItems(menu); return true; } @@ -247,6 +257,20 @@ public class RepoDetailsActivity extends AppCompatActivity { menuItem.setVisible(needsEnableNfcMenuItem); } + private void prepareShareMenuItems(Menu menu) { + if (!TextUtils.isEmpty(repo.address)) { + if (!TextUtils.isEmpty(repo.fingerprint)) { + shareUrl = Uri.parse(repo.address).buildUpon() + .appendQueryParameter("fingerprint", repo.fingerprint).toString(); + } else { + shareUrl = repo.address; + } + menu.findItem(R.id.action_share).setVisible(true); + } else { + menu.findItem(R.id.action_share).setVisible(false); + } + } + private void setupDescription(View parent, Repo repo) { TextView descriptionLabel = (TextView) parent.findViewById(R.id.label_description); diff --git a/app/src/main/res/menu/repo_details_activity.xml b/app/src/main/res/menu/repo_details_activity.xml index a98ec8310..36a9d95b3 100644 --- a/app/src/main/res/menu/repo_details_activity.xml +++ b/app/src/main/res/menu/repo_details_activity.xml @@ -3,14 +3,19 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:id="@+id/action_share" + android:icon="@drawable/ic_share_white" + android:title="@string/menu_share" + app:showAsAction="ifRoom|withText"/> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f16836e0c..54029b0fb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -345,6 +345,7 @@ This often occurs with apps installed via Google Play or other sources, if they Saved package repository %1$s. Looking for package repository at\n%1$s + Share Repository %s or later Up to %s %1$s up to %2$s