如何使用包管理器为应用程序列表创建选择器

时间:2016-01-06 14:39:32

标签: android android-intent android-package-managers

基本上我有一个热门电子邮件应用程序包名列表,我想创建一个选择器来启动发送电子邮件意图,你可以参考this  问题,这里他使用包管理器只是gmail,我想做一个包列表

2 个答案:

答案 0 :(得分:2)

  

我想要做的是模拟桌面行为,当您点击打开outlook / gmail客户端的电子邮件链接时,将to字段设置为电子邮件ID,但除此之外我想让用户选择电子邮件启动的应用程序

startActivity(new Intent(Intent.ACTION_SENDTO)
  .setData(Uri.parse("mailto:"+yourEmailAddressGoesHere)));

yourEmailAddressGoesHere替换为"电子邮件ID"。

如果用户有多个电子邮件客户端,并且用户未选择默认电子邮件客户端,则用户将自动获得选择器。如果用户只有一个电子邮件客户端,或者选择了默认的电子邮件客户端,则会引导用户进行某些活动,以便将邮件撰写到指定的电子邮件地址。

答案 1 :(得分:2)

创建意图添加设置其uri数据

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);

然后创建选择器意图。当您希望用户每次发送电子邮件时都选择他想要的应用程序时,此功能非常有用。如果您想选择一个应用并将其设为默认应用,您可以省略选择器并直接启动意图

Intent chooser = Intent.createChooser(intent, "Chooser title");

然后检查是否至少有一个活动可以处理电子邮件意图

if(intent.resolveActivity(getPackageManager()) != null){
    // there are apps, start the chooser
    startActivity(chooser);
} else {
    // no apps found
    Toast.makeText(this, "No apps found", Toast.LENGTH_SHORT).show();
}