Ich versuche, eine MMS-Nachricht mit mehreren Anhängen zu verarbeiten. Dazu erstelle ich eine HashMap wie folgt (dies ist nicht die komplette Implementierung, sondern nur der relevante Teil):
HashMap<String, Integer> hashAttachments = new HashMap<String, Integer>();
int c = 0;
if(atts != null) {
for(Attachment a : atts){
if(a.mimeType.startsWith("image/")){
<some code here>
hashAttachments.put(a.fileName, indx);
}else if(a.mimeType.startsWith("text/")){
<some code here>
hashAttachments.put("text_"+String.valueOf(c++)+".txt",indx);
}
<some more mime types>
} /* for */
die Nachricht, die ich zu verarbeiten versuche, hat 4 Anhänge - zwei Bilder und zwei Texte, so dass ich erwarte, dass die Hash-Map 4 Einträge enthält, wenn die for-Schleife beendet ist.
Was ich tatsächlich sehe, ist, dass irgendwann einer der Einträge der Map überschrieben wird und ich am Ende 3 statt 4 Einträge habe. Was könnte der Grund dafür sein? (Die Schlüssel sind eindeutig, nicht null und nicht in allen Fällen leer)
Vielen Dank im Voraus
EDITAR Schlüssel: Schlüssel nach jeder Iteration gesetzt (sieht perfekt aus, nicht das, was ich bei der Inspektion der Schlüssel im Debugger gesehen habe):
10-16 21:50:01.207: INFO/System.out(27593): ~~~~~~~
10-16 21:50:01.207: INFO/System.out(27593): abc.jpg
10-16 21:50:01.207: INFO/System.out(27593): ~~~~~~~
10-16 21:50:01.217: INFO/System.out(27593): abc.jpg
10-16 21:50:01.217: INFO/System.out(27593): 2010-06-18_12.47.50.jpg
10-16 21:50:01.227: INFO/System.out(27593): ~~~~~~~
10-16 21:50:01.227: INFO/System.out(27593): abc.jpg
10-16 21:50:01.227: INFO/System.out(27593): 2010-06-18_12.47.50.jpg
10-16 21:50:01.227: INFO/System.out(27593): text_0.txt
10-16 21:50:01.237: INFO/System.out(27593): ~~~~~~~
10-16 21:50:01.237: INFO/System.out(27593): abc.jpg
10-16 21:50:01.237: INFO/System.out(27593): text_1.txt
10-16 21:50:01.237: INFO/System.out(27593): 2010-06-18_12.47.50.jpg
10-16 21:50:01.237: INFO/System.out(27593): text_0.txt