package de.stephanlindauer.criticalmaps.handler;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import java.util.List;
public class PostTweetHandler {
private final static String HASHTAG = "CriticalMaps";
private final static String FALLBACK_URL = "https://twitter.com/intent/tweet?button_hashtag=" + HASHTAG;
private final Activity activity;
public PostTweetHandler(Activity activity) {
this.activity = activity;
}
public void execute() {
Intent twitterAppIntent = getTwitterAppIntent();
Intent intentToStart = twitterAppIntent != null ? twitterAppIntent : getFallbackWebIntent();
activity.startActivity(intentToStart);
}
private Intent getTwitterAppIntent() {
Intent tweetIntent = new Intent(Intent.ACTION_SEND);
tweetIntent.putExtra(Intent.EXTRA_TEXT, "#" + HASHTAG);
tweetIntent.setType("text/plain");
PackageManager packManager = activity.getPackageManager();
List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resolvedInfoList) {
if (resolveInfo.activityInfo.packageName.startsWith("com.twitter.android")) {
tweetIntent.setClassName(
resolveInfo.activityInfo.packageName,
resolveInfo.activityInfo.name);
return tweetIntent;
}
}
return null;
}
private Intent getFallbackWebIntent() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(FALLBACK_URL));
return intent;
}
}