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

インテントレシーバーが追加の値として期待しているものに関する適切なドキュメントを取得することは困難ですが、レシーバーはとにかく値をに変換するため、putExtraではStringなくaを渡す必要があると確信しています。それ。String[]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 に答える