1

在我的应用程序中,我将 WAV 文件作为电子邮件附件发送。在显示电子邮件选择器时,Indent.createChooser 意图将列出电子邮件、gmail、facebook、skype、蓝牙和其他不必要的选项。我只想显示电子邮件和 Gmail 选项。我不知道该怎么做?在您提出可能重复的问题之前,我看到了以下链接,但它对我没有帮助。

  1. 如何在电子邮件中发送录制的语音?
  2. Android Intent 选择器仅显示电子邮件选项

如上述链接中所述,我已经尝试过sendIntent.setType("audio/rfc822");。再次显示相同。

我的代码示例:

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "xxxxxxxxxxxx");
    sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://" + f.getAbsolutePath())); 
    sendIntent.setType("audio/wav");
    startActivity(Intent.createChooser(sendIntent, "Email file"));

更新的问题:

我已经实现了一个示例,其中列出了已安装的应用程序,然后单击列表视图上的项目我将启动 Gmail / 电子邮件应用程序: 上面写着“没有应用程序可以执行此操作”。

要在列表视图中列出应用程序:

-----------------
List<PackageInfo> packs = packageManager.getInstalledPackages(0);
  for(int i = 0; i < packs.size(); i++) {
     PackageInfo p = packs.get(i);
     ApplicationInfo a = p.applicationInfo;
     if ((includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
        continue;
     }
     App app = new App();
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
     app.setPackageName(p.packageName);
     app.setVersionName(p.versionName);
     app.setVersionCode(p.versionCode);
     app.setInstallDir(p.applicationInfo.sourceDir);
     app.setInstallSize(calculateSize(app.getInstallDir()));
     CharSequence description = p.applicationInfo.loadDescription(packageManager);
     app.setDescription(description != null ? description.toString() : "");
     apps.add(app);
     -----------

在 onclick 项目事件中是:

                Intent sendIntent = new Intent(getPackageManager().getLaunchIntentForPackage(app.getPackageName()));
                sendIntent.putExtra(Intent.EXTRA_SUBJECT, "xxxxxxxxxxxx");
                sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath()+"/Music/SalsaFav.mp3")); 
                sendIntent.setType("audio/wav");
                startActivity(Intent.createChooser(sendIntent, "Email file"));

请帮我。

4

2 回答 2

0

您可能需要创建自己的弹出式活动并将意图发送到该活动。现在在该弹出活动中,您需要列出您喜欢的沟通渠道。在单击任何通信渠道时,您弹出的活动应启动相关活动。您可以查看的其他内容是这篇文章,它将向您展示如何完成工作:)

于 2012-09-03T11:45:20.287 回答
0

你有两个选择:

  • PackageManager与 queryIntentActivities 函数一起使用,从中过滤并显示您自己的 Dialog

在这里,您可以获得可以实际处理您的 Intent 的应用程序:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "xxxxxxxxxxxx");
sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://" + f.getAbsolutePath())); 
sendIntent.setType("audio/wav");

// Get the Activities which can handle the Intent
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(sendIntent, 0);

// Loop on your Activities, filter and construct your own list here
if (!resolveInfos.isEmpty()){
  for (ResolveInfo resolveInfo : resolveInfos) {
  // Filter here !

  }
}

我认为第一个解决方案最符合您的需求

于 2012-09-03T11:52:59.327 回答