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..4e45a61c2 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java @@ -22,6 +22,7 @@ import android.text.TextUtils; import android.text.format.DateUtils; import android.view.Menu; import android.view.MenuItem; +import android.view.TextureView; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -38,6 +39,7 @@ import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.data.Schema.RepoTable; +import java.net.URI; import java.util.Locale; public class RepoDetailsActivity extends AppCompatActivity { @@ -75,6 +77,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 +209,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 +218,14 @@ 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, "gogogo")); } return super.onOptionsItemSelected(item); @@ -224,6 +234,7 @@ public class RepoDetailsActivity extends AppCompatActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { prepareNfcMenuItems(menu); + prepareShareMenuItems(menu); return true; } @@ -247,6 +258,19 @@ 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..54d82fc48 100644 --- a/app/src/main/res/menu/repo_details_activity.xml +++ b/app/src/main/res/menu/repo_details_activity.xml @@ -2,6 +2,11 @@ +