Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/IntentHelper.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHelper.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5ad5476ecf3ac434dfe0b7cc87d71020d5a35827 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHelper.java |
| @@ -0,0 +1,68 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser; |
| + |
| +import android.accounts.Account; |
| +import android.accounts.AccountManager; |
| +import android.content.Context; |
| +import android.content.Intent; |
| +import android.text.Html; |
| +import android.text.TextUtils; |
| +import android.util.Patterns; |
| + |
| +import org.chromium.base.CalledByNative; |
| + |
| +import java.util.HashSet; |
| +import java.util.Set; |
| +import java.util.regex.Pattern; |
| + |
| +/** |
| + * Helper for issuing intents to the android framework. |
| + */ |
| +public abstract class IntentHelper { |
| + |
| + private IntentHelper() {} |
| + |
| + /** |
| + * Triggers a send email intent. If no application has registered to receive these intents, |
| + * this will fail silently. |
| + * |
| + * @param context The context for issuing the intent. |
| + * @param email The email address to send to. |
| + * @param subj The subject of the email. |
|
Yaron
2012/07/23 23:49:43
nit: why not just call it "subject"
Ted C
2012/07/24 00:28:51
Done.
|
| + * @param body The body of the email. |
| + * @param inv The title of the activity chooser. |
|
Yaron
2012/07/23 23:49:43
nit: what's "inv"?
Ted C
2012/07/24 00:28:51
Changed to chooserTitle
|
| + */ |
| + @CalledByNative |
| + static void sendEmail(Context context, String email, String subj, String body, String inv) { |
| + Set<String> possibleEmails = new HashSet<String>(); |
| + |
| + if (!TextUtils.isEmpty(email)) { |
| + possibleEmails.add(email); |
| + } else { |
| + Pattern emailPattern = Patterns.EMAIL_ADDRESS; |
| + Account[] accounts = AccountManager.get(context).getAccounts(); |
| + for (Account account : accounts) { |
| + if (emailPattern.matcher(account.name).matches()) { |
| + possibleEmails.add(account.name); |
| + } |
| + } |
| + } |
| + |
| + Intent send = new Intent(Intent.ACTION_SEND); |
| + send.setType("message/rfc822"); |
| + if (possibleEmails.size() != 0) { |
| + send.putExtra(Intent.EXTRA_EMAIL, |
| + possibleEmails.toArray(new String[possibleEmails.size()])); |
| + } |
| + send.putExtra(Intent.EXTRA_SUBJECT, subj); |
| + send.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body)); |
| + try { |
| + context.startActivity(Intent.createChooser(send, inv)); |
| + } catch (android.content.ActivityNotFoundException ex) { |
| + // If no app handles it, do nothing. |
| + } |
| + } |
| +} |