【问题标题】:Android image share intent - how can I exclude a particular handler from the list?Android 图像共享意图 - 如何从列表中排除特定处理程序?
【发布时间】:2016-04-23 13:55:43
【问题描述】:

在我的 Android 应用程序中,我从 Instragram API 加载了一张图片,我通过通用共享意图共享它,如下所示:

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
Uri uri = Uri.fromFile(file);
share.putExtra(Intent.EXTRA_STREAM,uri);

startActivity(Intent.createChooser(share, "Share Image"));

默认情况下,它会列出处理此意图的所有已安装应用程序,包括 Instagram,它是图像的原始来源。如何过滤此列表以仅将 Instagram 应用程序排除在处理意图之外,同时保留所有其余部分?

【问题讨论】:

    标签: android android-intent intentfilter


    【解决方案1】:

    如何过滤此列表以仅将 Instagram 应用排除在处理意图之外,而保留其他所有内容?

    您不能,除非创建自己的选择器活动,在 PackageManager 上使用 queryIntentActivities() 并以某种方式过滤掉 Instagram。这样做是不可靠的,仅仅是因为有多个可能的 Instagram 客户,他们的包名称不能提前确定。

    我只是将 Instagram 留在那里作为一个选项。

    【讨论】:

      【解决方案2】:

      我使用此代码过滤 Instagram 的共享意图。

      List<Intent> targets = new ArrayList<Intent>();
      Intent template = new Intent(Intent.ACTION_SEND);
      template.setType("text/plain");
      List<ResolveInfo> candidates = this.getPackageManager().
      queryIntentActivities(template, 0);
      
      // remove all intent except instagram in share intent
      for (ResolveInfo candidate : candidates) {
          String packageName = candidate.activityInfo.packageName;
          if (packageName.contains("instagram")) {
             Intent target = new Intent(android.content.Intent.ACTION_SEND);
             target.setType("text/plain");
             target.putExtra(Intent.EXTRA_TEXT, "Text to share"));
             target.setPackage(packageName);
             targets.add(target);
          }
      }
      Intent chooser = Intent.createChooser(targets.remove(0), translate("Share Via"));
      chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, targets.toArray(new Parcelable[]{}));
      startActivity(chooser);
      

      【讨论】:

        猜你喜欢
        • 2020-05-11
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        相关资源
        最近更新 更多