Android直接分享

时间:2016-03-02 23:06:19

标签: java android share

我正在尝试通过直接分享从我的应用分享链接。共享对话框必须如下图所示,其中包含来自消息应用程序的最常用联系人,例如WhatsApp联系人。

Goal which I am trying to achieve

这是我用来共享链接的Intent结构:

 Intent shareIntent = ShareCompat.IntentBuilder
                        .from(getActivity())
                        .setType("text/plain")
                        .setText(sTitle+ "\n" + urlPost)
                        .getIntent();
                if (shareIntent.resolveActivity(
                        getActivity().getPackageManager()) != null)
                    startActivity(shareIntent);

这就是我的应用显示的内容:

what my app shows

知道如何实现这个目标吗?

3 个答案:

答案 0 :(得分:5)

您应该使用.createChooserIntent()代替.getIntent()

答案 1 :(得分:0)

如下面的代码,您可以使用Intent.createChooser

            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            Uri screenshotUri = Uri.parse("file://" + filePath);

            sharingIntent.setType("image/png");
            sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
            startActivity(Intent.createChooser(sharingIntent, "Share image using"));

答案 2 :(得分:0)

  

您应该使用.createChooserIntent()代替.getIntent()

文档:这使用ACTION_CHOOSER意图,显示

  

活动选择器,允许用户在继续之前选择他们想要的内容。当您尝试使用多个可能的匹配项启动活动时,这可以用作系统显示的标准活动选择器的替代方法,但行为存在以下差异:

     
      
  • 您可以指定将出现在活动选择器中的标题。
  •   
  • 用户无法选择将其中一个匹配活动作为首选活动,并且所有可能的活动都将是   即使其中一个当前标记为,也始终显示   首选活动。
  •   
     

当用户自然期望时,应该使用此操作   选择一项活动以继续。一个例子,如果不使用   当用户点击“mailto:”链接时。他们很自然   期望直接转到他们的邮件应用程序,所以startActivity()应该是   直接调用:它将启动当前首选应用程序,或   建立一个对话框,允许用户选择要使用的应用程序,也可以选择   标记为首选。

     

相反,如果用户正在选择菜单项来发送图片   他们正在向别人看,他们有很多不同的东西   可能想要做到这一点:通过电子邮件发送,上传到   Web服务等。在这种情况下,应使用CHOOSER操作   总是向用户呈现他们可以做的事情的列表,用   来电者给出的好标题,例如“发送照片:”。