如何从Android上的电子邮件选择器中删除的Facebook,Skype和不必要的选项(How t

2019-09-22 02:18发布

在我的应用我在email.while发送WAV文件作为附件显示电子邮件选配的Indent.createChooser意图将列出电子邮件时,Gmail,Facebook的,SKYPE,蓝牙等不需要的选项了。 我想只显示邮件和Gmail选项。 我不知道该怎么做? 你之前可能其重复的问题,我看到了下面的链接,它并不能帮助我。

  1. 如何发送记录的语音电子邮件?
  2. Android的意图选择器只显示电子邮件选项

至于说在上述链接我试图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"));

请帮我。

Answer 1:

你可能需要创建自己的弹出式活动并发送意图这项活动。 现在,在弹出的活动你需要列出你喜欢的沟通渠道。 在点击任何通信信道的你弹出活动应启动相关活动。 你可以看看其他的事情是这个帖子里面会告诉你如何让您的工作做了一些光:)



Answer 2:

你有两个选择:

  • 使用PackageManager从与queryIntentActivities功能,过滤器和显示你自己的对话框

在这里你可以实际处理你的意图的应用程序:

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 !

  }
}
  • 查询自己的PackageManager与已知的包名与列表getApplicationInfo根据现有的应用程序,并建立你的对话

我认为第一个解决方案的最佳配衬您的需求



文章来源: How to remove facebook,skype and Unnecessary option from email chooser on android