【问题标题】:Start gmail with specific sender mail使用特定发件人邮件启动 gmail
【发布时间】:2015-03-01 17:34:40
【问题描述】:

我正在构建一个应用程序来处理与大学生的学术生活有关的任何事情,包括他的大学邮件帐户

假设安装了我的应用的手机有两个或更多不同的 gmail 帐户集:
- “帐户 1” - “abcdef@gmail.com”
- “账户 2” - “123456@mydomain.com”

我知道要启动 gmail 应用程序,我可以使用以下代码:

public void showMailBox(View view){  
    Intent sendIntent = new Intent(Intent.ACTION_VIEW);  
    sendIntent.setType("plain/text");  
    sendIntent.setData(Uri.parse("test@gmail.com"));  
    sendIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");  
    sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "test@gmail.com" });  
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "test");  
    sendIntent.putExtra(Intent.EXTRA_TEXT, "hello");  
    startActivity(sendIntent);  
}

我如何设置意图以启动 Gmail 或 Inbox,并将第二个帐户设置为发件人

【问题讨论】:

  • “我知道要启动 gmail 应用程序,我可以使用此代码”——仅适用于某些版本的 Gmail 应用程序。一旦他们重构了他们的代码,你的代码就会崩溃。此外,plain/text 不是 MIME 类型。除此之外,Gmail 没有记录或支持的设备 API 来操作他们的应用程序。

标签: android email gmail inbox


【解决方案1】:

要访问您的 Android 手机中的注册帐户,您必须在您的 Manifest 文件中添加 android.permission.GET_ACCOUNTS 权限。此权限允许访问帐户服务中的帐户列表。

<uses-permission android:name=”android.permission.GET_ACCOUNTS” />

使用以下方法获取您手机中的帐户列表(谷歌帐户ID)。

public ArrayList<String> getData() {
        ArrayList<String> accountsall = new ArrayList<String>();
            try {
            Account[] accounts = AccountManager.get(this).getAccountsByType("com.google");
            for (Account account : accounts) {
                accountsall.add(account.name);
            }
        } catch (Exception e) {
            Log.i("Exception", "Exception:" + e);
        }
        return accountsall;
    }

从您的代码中的方法返回的列表中获取帐户,验证您需要哪个帐户在哪里。例如,我将第一个找到的帐户设置为 To mail id,第二个找到的帐户设置为 From mail id。只需尝试打印列表以查找哪个帐户在哪个位置,然后在您的代码中引用。

public void showMailBox(View view){  
    ArrayList<String> mails=getData();
    Intent sendIntent = new Intent(Intent.ACTION_VIEW);  
    sendIntent.setType("plain/text");  
    sendIntent.setData(Uri.parse(mails.get(0)));  
    sendIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");  
    sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { mails.get(1) });  
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "test");  
    sendIntent.putExtra(Intent.EXTRA_TEXT, "hello");  
    startActivity(sendIntent);  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2016-12-23
    • 2014-09-07
    相关资源
    最近更新 更多