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