Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to open Gmail Compose when a button is clicked in Android App?

Tags:

android

gmail

I am trying to open up Gmail Compose screen when a button is clicked in my Android App. Do I need some API key for this from Google? or what do I need to do in my button onClickListener?

Any kind of insight is much appreciated.

like image 365
Aakash Avatar asked Oct 14 '10 15:10

Aakash


People also ask

Where is the Compose button in Gmail app?

Gmail's compose button is annoyingly small and unintuitive on phones. You may have not noticed it, but it's the round, floating button in the lower right part of the display with a pen or plus icon, depending on whether you're on an Android phone or an iPhone.

How do I get my compose button back in Gmail?

As Google says, you can revert back to the 'classic' compose view at any time by clicking the down arrow in the new compose view and selecting, “Switch back to old compose.”


1 Answers

As JeffC pointed out, it is easy to essentially tell Android that you want to send something email-like and have Android give users a list of choices, which will probably include GMail. If you specifically want GMail, you have to be a bit cleverer. (Note that the correct MIME type is actually "text/plain", not "plain/text". Do to an implementation oddity, GMail seems to be the only activity which responds to the latter, but this isn't a behavior I would count on.)

The following App demonstrates the principle you can follow: actually examine all of the activities which say they can handle your SEND intent and see if any of them look like GMail.

package com.stackoverflow.beekeeper;  import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle;  import java.util.List;  public class StackOverflowTest extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(final Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         final Intent intent = new Intent(android.content.Intent.ACTION_SEND);         intent.setType("text/plain");         final PackageManager pm = getPackageManager();         final List<ResolveInfo> matches = pm.queryIntentActivities(intent, 0);         ResolveInfo best = null;         for (final ResolveInfo info : matches)            if (info.activityInfo.packageName.endsWith(".gm") ||         info.activityInfo.name.toLowerCase().contains("gmail")) best = info;         if (best != null)            intent.setClassName(best.activityInfo.packageName, best.activityInfo.name);         startActivity(intent);     }  } 
like image 91
beekeeper Avatar answered Sep 24 '22 12:09

beekeeper