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. |
+ } |
+ } |
+} |