Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java

Issue 2775373002: Add a Share Icon to Tabular Context Menu (Closed)
Patch Set: Fixes based off twellington's comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java
index 97583b682427c1491325995f4a6fa8c3e7c6c11d..8b4151ed4360f90c8b1776d12bc3020d2b992ddf 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java
@@ -314,8 +314,11 @@ public class ShareHelper {
* Trigger the share action for the given image data.
* @param activity The activity used to trigger the share action.
* @param jpegImageData The image data to be shared in jpeg format.
+ * @param name When this is not null, it will share the image directly with whatever the
+ * component name is.
*/
- public static void shareImage(final Activity activity, final byte[] jpegImageData) {
+ public static void shareImage(
+ final Activity activity, final byte[] jpegImageData, final ComponentName name) {
if (jpegImageData.length == 0) {
Log.w(TAG, "Share failed -- Received image contains no data.");
return;
@@ -362,9 +365,15 @@ public class ShareHelper {
Uri imageUri = ApiCompatibilityUtils.getUriForImageCaptureFile(activity,
saveFile);
- Intent chooserIntent = Intent.createChooser(getShareImageIntent(imageUri),
- activity.getString(R.string.share_link_chooser_title));
- fireIntent(activity, chooserIntent);
+ if (name == null) {
+ Intent chooserIntent = Intent.createChooser(getShareImageIntent(imageUri),
+ activity.getString(R.string.share_link_chooser_title));
+ fireIntent(activity, chooserIntent);
+ } else {
+ Intent imageIntent = getShareImageIntent(imageUri);
+ imageIntent.setComponent(name);
+ fireIntent(activity, imageIntent);
+ }
}
}
}.execute();
@@ -540,6 +549,26 @@ public class ShareHelper {
* @param item The menu item that is used for direct share
*/
public static void configureDirectShareMenuItem(Activity activity, MenuItem item) {
+ Drawable directShareIcon;
+ CharSequence directShareTitle;
+
+ Pair<Drawable, CharSequence> directShare = getShareableIconAndName(activity);
+ directShareIcon = directShare.first;
+ directShareTitle = directShare.second;
+
+ item.setIcon(directShareIcon);
+ if (directShareTitle != null) {
+ item.setTitle(
+ activity.getString(R.string.accessibility_menu_share_via, directShareTitle));
+ }
+ }
+
+ /**
+ * Get the icon and name of the most recently shared app within chrome.
+ * @param activity Activity that is used to access the package manager.
+ * @return The Image and the String of the recently shared Icon.
+ */
+ public static Pair<Drawable, CharSequence> getShareableIconAndName(Activity activity) {
Drawable directShareIcon = null;
CharSequence directShareTitle = null;
@@ -597,11 +626,7 @@ public class ShareHelper {
"Android.IsLastSharedAppInfoRetrieved", retrieved);
}
- item.setIcon(directShareIcon);
- if (directShareTitle != null) {
- item.setTitle(activity.getString(R.string.accessibility_menu_share_via,
- directShareTitle));
- }
+ return new Pair<>(directShareIcon, directShareTitle);
}
/*
@@ -674,7 +699,7 @@ public class ShareHelper {
return intent;
}
- private static ComponentName getLastShareComponentName() {
+ public static ComponentName getLastShareComponentName() {
SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
String packageName = preferences.getString(PACKAGE_NAME_KEY, null);
String className = preferences.getString(CLASS_NAME_KEY, null);

Powered by Google App Engine
This is Rietveld 408576698