0

我想在文本消息正文中显示多个值,但是即使 textArray 有值,下面的代码也不显示正文消息。有没有办法通过循环向电子邮件正文添加值?

        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.setType("text/html");
            sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Example");

            int sizeOfArray = list.size();
            String textArray [] = new String[sizeOfArray];

            for(int i = 0;sizeOfArray > i;i++)
            {
                HashMap<String, String> arrayString = list.get(i);
                String user = arrayString.get("user");
                String book = arrayString.get("book");
                textArray[i] = user + " - " + book;
            }

            sharingIntent.putExtra(Intent.EXTRA_TEXT, textArray);
            startActivity(Intent.createChooser(sharingIntent,"Share using"));
        }
    });
4

2 回答 2

1

很难获得有关 Intent Receiver 期望作为额外值的正确文档,但我很确定您需要将 aString而不是 a传递String[]给 putExtra,因为 Receiver 最终会将值转换为 a String,因此更好地控制那。

话虽如此,您对循环的实现很奇怪。你真的有一个HashMap<String, String>作为输入的列表吗?

我会做 :

StringBuffer sb = new StringBuffer();
for(HashMap<String, String> item: list){
    String user = item.get("user");
    String book = item.get("book");
    sb.append(user + " - " + book+", ");
}
String value = sb.substring(0, Math.max(0,sb.length()-2));
于 2012-04-18T12:40:25.040 回答
1

Intent.EXTRA_TEXT 根据文档需要 CharSequence:http: //developer.android.com/reference/android/content/Intent.html#EXTRA_TEXT

我猜当你传入一个数组时,接收活动不知道如何处理它,只是跳过它。

尝试加入您的数组值并将它们作为字符串传递。

String arg = org.apache.commons.lang.StringUtils.join (textArray, '\n');
sharingIntent.putExtra(Intent.EXTRA_TEXT, arg);
于 2012-04-18T12:40:53.240 回答