我正在构建一个应用程序来处理与大学生学术生活有关的任何事情,包括他的大学邮件帐户。
假设安装我的应用程序的手机有两个或多个不同的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或收件箱的意图?
要访问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);
}