2016-07-28 37 views
2
Intent share = new Intent(Intent.ACTION_SEND); 
Uri requestUrl = Uri.parse(url); 
String pContent = requestUrl.toString().split("share://")[1]; 
String pasteData = pContent+""; 

share.setAction(Intent.ACTION_SEND); 
share.setType("message/rfc822"); 
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
//String septline = System.getProperty("line.separator"); 
//pasteData= pasteData.replaceAll("<br />", "\n"); 
Toast toast=Toast.makeText(getApplicationContext(),pasteData, Toast.LENGTH_LONG); 
toast.setMargin(50,50); 
toast.show(); 
String [] parts = pasteData.split("<br />"); 
for (String part : parts){ 
     share.putExtra(Intent.EXTRA_TEXT, part); 
} 
startActivity(Intent.createChooser(share, "Share On")); 

我想for循环应该写为每个零件share.putextra,但这里putextra属于人只有一次与最后部分的价值只有putExtra在意图使用循环

ANS shuld是这样

share.putExtra(Intent.EXTRA_TEXT, part1); 
share.putExtra(Intent.EXTRA_TEXT, part2); 
share.putExtra(Intent.EXTRA_TEXT, part3); 
+0

其实,主要的问题是,我想分享三行(第一行\ n第二行\ n第三行)在whatsapp远足邮件文本等;但newLine不支持这个,为什么我想分享这些完整的句子,而不是单行,但作为一个不同的行 – Shubham

回答

3

你做错了,在Intent中每个键都是唯一的,所以如果你尝试使用 来放置任何具有相同键的数据,它将被覆盖。

所以在你的代码中,当你运行一个循环,并且Intent键在循环中是相同的,所以它被覆盖,并且你只获得最后一个值。

要解决此问题,请尝试使用不同的键输入数据。

欲了解更多信息,请访问Android developer page

0

尝试这样

Intent share = new Intent(Intent.ACTION_SEND); 
Uri requestUrl = Uri.parse(url); 
String pContent = requestUrl.toString().split("share://")[1]; 
String pasteData = pContent+""; 

share.setAction(Intent.ACTION_SEND); 
share.setType("message/rfc822"); 
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
//String septline = System.getProperty("line.separator"); 
//pasteData= pasteData.replaceAll("<br />", "\n"); 
Toast toast=Toast.makeText(getApplicationContext(),pasteData, Toast.LENGTH_LONG); 
toast.setMargin(50,50); 
toast.show(); 
String [] parts = pasteData.split("<br />"); 
StringBuilder sb = new StringBuilder(); 
for (String part : parts){ 
     sb.append(part); 
} 

startActivity(Intent.createChooser(share, "Share On")); 
+0

他没有发送数据到他的其他活动,他想分享数据使用意图,任何应用程序是能够处理意图类型“message/rfc822” –

0

你必须一次设置,您可以使用字符串建设者打破所有的数据/ N,然后为您提供一次意图。

StringBuilder sb = new StringBuilder(); 
String [] parts = pasteData.split("<br />"); 
for (String part : parts){ 
     sb.append(part); 
} 
share.putExtra(Intent.EXTRA_TEXT, sb.toString()); 
0

是的,我得到了ANS,感谢大家的支持和想法 这个我们如何才能增加新的生产线,以内容(电子邮件,加息,短信,群聊,WhatsApp的)。

if (url.startsWith("share://")) { 

      Intent share = new Intent(Intent.ACTION_SEND); 
      Uri requestUrl = Uri.parse(url); 
      String pContent = requestUrl.toString().split("share://")[1]; 
      String pasteData = pContent+""; 
      share.setAction(Intent.ACTION_SEND); 
      share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
      Toast toast=Toast.makeText(getApplicationContext(),pasteData, Toast.LENGTH_LONG); 
      toast.setMargin(50,50); 
      toast.show(); 
      StringBuilder sb = new StringBuilder(); 
      String [] parts = pasteData.split("<br />"); 
      for (int i = 0; i < parts.length; i++) { 
       String part = parts[i]; 
       sb.append(part); 
       sb.append('\n'); 
      } 
      share.putExtra(android.content.Intent.EXTRA_TEXT, (Serializable) sb); 

      //share.setType("message/rfc822"); 
      //share.setType("text/plain"); 
      share.setType("*/*"); 
      startActivity(Intent.createChooser(share, "Share On")); 
      return true;