Sembra che tu stia davvero avendo un timeout. Dici che a volte funziona ... Hai un problema di ricezione con la tua rete dati 3G (o qualsiasi altra cosa tu usi) nella tua zona?
Se si sta navigando in Internet dalla stessa posizione e le pagine non caricano l'aggiornamento e il timeout, allora questo è probabilmente il tuo problema.
Prova dove sai che la ricezione è buona. È possibile ignorare questo problema rilevando l'eccezione e riprovare l'invio del messaggio ancora alcune volte prima di inviare un messaggio all'utente che il messaggio non può essere inviato o il simile. Ancora meglio sarebbe salvare una cronologia di messaggi non inviati in modo che l'utente possa inviarli nuovamente in un secondo momento. Naturalmente presumo che l'invio del messaggio sia guidato dall'utente. In caso contrario, è possibile controllare la ricezione dei dati di tanto in tanto (ogni pochi minuti) e poi inviare nuovamente quando è abbastanza buono fino a quando non passa attraverso.
Spero di aver aiutato.
quali errori hai trovato? – Lucifer
Funziona per alcuni casi ma in molti casi iam ottenendo java.net.SocketException: l'operazione è scaduta – Sando
quindi aumenta il timeout utilizzando setConnectTimeout(); – Lucifer