Thursday, February 28, 2013

Customize your ACTION_CHOOSER Intent

For an Android Intent chooser, it is possible to either remove an Intent or add an custom Intent, this is how we do it:

List<Intent> targetedShareIntents = new ArrayList<Intent>();

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "http://www.blogspot.com");

List<ResolveInfo> resInfo = this.getPackageManager().queryIntentActivities(intent, 0);

for (ResolveInfo resolveInfo : resInfo) {
   String packageName = resolveInfo.activityInfo.packageName;

   Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
   targetedShareIntent.setType("text/plain");
   targetedShareIntent.putExtra(Intent.EXTRA_TEXT, "http://www.blogspot.com");
   targetedShareIntent.setPackage(packageName);

   if (!packageName.equals("com.facebook.katana")) { // Remove Facebook Intent share
      targetedShareIntents.add(targetedShareIntent);
   }
  }

// Add my own activity in the share Intent chooser
Intent i = new Intent(this, NextActivity.class);
targetedShareIntents.add(i);

Intent chooserIntent = Intent.createChooser(
   targetedShareIntents.remove(0), "Select app to share");

chooserIntent.putExtra(
   Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));

startActivity(chooserIntent);

Very nice reference from the following posts:

Sync multiple git repo at once

Use the following command in Linux will do the job:  ls -d RepoNames* | xargs -I{} git -C {} pull