我正在构建一个应用程序,以处理与大学生的学术生活有关的任何事情,包括他的大学邮件帐户。
假设安装了我的应用的手机设置了两个或更多个不同的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或收件箱的意图,将第二个帐户设置为发件人?
答案 0 :(得分:0)
要访问Android手机中的注册帐户,您必须为您的Manifest文件添加android.permission.GET_ACCOUNTS
权限。此权限允许访问帐户服务中的帐户列表。
<uses-permission android:name=”android.permission.GET_ACCOUNTS” />
使用以下方法获取移动设备中的帐户列表(Google帐户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);
}