putExtra在Intent中使用for循环

时间:2016-07-28 05:39:15

标签: android android-intent

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"));

我想循环应该为每个部分写share.putextra,但是这里putextra只有一次只有最后一部分的值

ans shuld就像这样

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

4 个答案:

答案 0 :(得分:3)

  

你做错了,在Intent中每个键都是唯一的,所以如果你试试   如果用相同的密钥放置任何数据,它就会被覆盖。

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

要解决此问题,请尝试使用不同的密钥放置数据。

有关详细信息,请访问Android developer page

答案 1 :(得分: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"));

答案 2 :(得分:0)

你必须立即设置所有数据,你可以使用带有break / n的字符串构建器,然后为你提供一次意图。

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

答案 3 :(得分: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;