package com.novoda.priorityshare; import android.content.ComponentName; import android.content.Intent; import com.novoda.priorityshare.composer.MessageComposer; import com.novoda.priorityshare.composer.TwitterMessageComposer; import java.util.Collection; public class TwitterOnPrepareSharingIntentListener implements OnPrepareSharingIntentListener { private String prefix; private String url; private String suffix; public TwitterOnPrepareSharingIntentListener(String prefix, String url, String suffix) { this.prefix = prefix; this.url = url; this.suffix = suffix; } @Override public Intent onPrepareSharingIntent(Intent intent) { if (isIntentTargetATwitterClient(intent)) { CharSequence originalSubject = intent.getCharSequenceExtra(Intent.EXTRA_SUBJECT); String subject = originalSubject != null ? originalSubject.toString() : null; MessageComposer composer = createComposer(); intent.putExtras(composer.composeToBundle(subject, url)); } return intent; } private boolean isIntentTargetATwitterClient(Intent intent) { ComponentName component = intent.getComponent(); if (component != null) { String targetPackageName = component.getPackageName(); return isStringEqualToAnyInArray(targetPackageName, TargetApps.TWITTER.getTargetPackages()); } return false; } private boolean isStringEqualToAnyInArray(String originalString, Collection<String> stringsArray) { for (String arrayItem : stringsArray) { if (originalString.equals(arrayItem)) { return true; } } return false; } private MessageComposer createComposer() { return new TwitterMessageComposer() .setPrefix(prefix) .setSuffix(suffix); } }