Autore Topic: Invio di un sms tramite intent e Asynctask  (Letto 1136 volte)

Offline Improving

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Google+
    • lorenz522
    • Mostra profilo
  • Dispositivo Android:
    Android HTC Desire Z
  • Play Store ID:
    Lorenzo Del Soldato
  • Sistema operativo:
    Ubuntu Linux 11.04
Invio di un sms tramite intent e Asynctask
« il: 12 Luglio 2011, 17:05:41 CEST »
0
Ciao a tutti,

chissà se a qualcuno di voi è già successa questa cosa.
nel mio codice invio un sms, nel senso che lo precompilo poi attendo che l'utente prema invio..
se il monitor è acceso non ci sono problemi, altrimenti se è spento (ho il partial_wake_lock attivato) sento il rumore della notifica che viene inviato un sms, appena risveglio il tel rimane vedo il programma di invio degli sms e rimane su loading con la "ruzzolina" (leggi anche clessidra) che gira. A qualcuno è capitata una cosa del genere? nel logcat non ho errori
ecco il codice per inviare l'sms

ho fatto varie prove, questa è l'ultima:

Codice (Java): [Seleziona]
protected class SendSms extends AsyncTask<String, String, String> {
     
          @Override
          protected String doInBackground(String... params) {
                  // stringa passata a onProgressUpdate
                  String myMessage = ...........
                 
                 
                  myMessage +=  getString(R.string.sms_text_message_from_you);
                  String sendTo =getPhone();
                         
                       
               
                                                Intent smsIntent = new Intent(Intent.ACTION_VIEW);
                                                smsIntent.setType("vnd.android-dir/mms-sms");
                                                smsIntent.putExtra("address" , sendTo);
                                        smsIntent.putExtra("sms_body", myMessage);
                                       
                                        Log.i(LOG_TAG, "Lancio l'intent per l'invio dell'sms con conferma");
                                       
                                        startActivity(smsIntent);
                                       
                       
             
                 
                  return "Finish !";
                  // stringa passata a onPostExecute
          }
          @Override
          protected void onProgressUpdate(String... values)
          {
                  super.onProgressUpdate(values);
                  Log.i( LOG_TAG, "onProgressUpdate(): " );
                 
          }
         
          @Override
          protected void onCancelled()
          {
                  super.onCancelled();
                  Log.i( LOG_TAG, "onCancelled()" );
               
          }

            @Override
          protected void onPostExecute( String result )
          {
                  super.onPostExecute(result);
                  Log.i( LOG_TAG, "onPostExecute(): " + result );
               
          }


 

  }

non capisco dove sto sbagliando....

EDIT:
ho provato anche a togliere l'asynctask e chiamare direttamente l'intent e usare anche l'action.SEND_TO, ma fa esattamente uguale... mistero
« Ultima modifica: 13 Luglio 2011, 18:51:42 CEST da Improving »

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Invio di un sms tramite intent e Asynctask
« Risposta #1 il: 16 Luglio 2011, 09:44:48 CEST »
0
Molto probabilmente accade che spegnendosi lo schermo l'activity va in pausa quindi l'Async non riesce ad aggiornare la UI, perchè non gestisci tutto con un service ?

Offline bovello

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +2
    • Mostra profilo
    • Bovello
  • Dispositivo Android:
    San Francisco
  • Play Store ID:
    Bovello
  • Sistema operativo:
    Windows 7, Mac OS Snow Leopard
Re:Invio di un sms tramite intent e Asynctask
« Risposta #2 il: 17 Luglio 2011, 22:23:09 CEST »
0
Ciao,
ma la rotellina è la tua (non ne vedo la gestione nel codice) quella dell'activity che chiami? se è la seconda temo che possa farci poco...

Altra domanda: perchè un async task? l'azione parte ad un comando dell'utente o c'è qualche operatività dell'app per il recupero dei dati da inviare?

Offline Improving

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Google+
    • lorenz522
    • Mostra profilo
  • Dispositivo Android:
    Android HTC Desire Z
  • Play Store ID:
    Lorenzo Del Soldato
  • Sistema operativo:
    Ubuntu Linux 11.04
Re:Invio di un sms tramite intent e Asynctask
« Risposta #3 il: 19 Luglio 2011, 14:50:36 CEST »
0
Grazie prima di tutto per le risposte

poi..
@bovello
no, non è la mia, è del programma di invio sms

l'ho messo in un asynctask perchè, nel caso che per una ragione che neanche io so, non riesco a chiamare l'activity mi desse la finestra di force close. Comunque come ti dicevo ho anche provato senza, e fa esattamente uguale.

@mimmog
potrebbe essere un'idea, chiamare l'activity dal service, vediamo che succede, ti faccio sapere. grazie per ora

Offline bovello

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +2
    • Mostra profilo
    • Bovello
  • Dispositivo Android:
    San Francisco
  • Play Store ID:
    Bovello
  • Sistema operativo:
    Windows 7, Mac OS Snow Leopard
Re:Invio di un sms tramite intent e Asynctask
« Risposta #4 il: 19 Luglio 2011, 15:04:03 CEST »
+1
Ciao,
toglierei l'asynctask, per quanto ne sappia io non è quello il suo scopo e non credo che ti eviti il force close (anzi potrebbero innescarsi altri problemi con il looper, sincronia con i thread...).

Prova piuttosto a verificare che esista un'activity che possa soddisfare l'intent prima di lanciarlo. Io in altri casi ho utilizzato questa tecnica e ha funzionato (non so in questo caso, in effetti io la chiamavo in altro modo... non ti resta che provare):

Codice (Java): [Seleziona]
//tuo codice dove crei l'intent...

List<ResolveInfo> activities = pm.queryIntentActivities( smsIntent , 0);
if (activities.size()!=0)
{
//posso lanciare l'activity
}

Però se devi inviare un SMS più o meno in automatico, perchè non lo invii direttamente dalla tua app?

Prendo spunto da questa (SMS Messaging in Android | mobiForge) guida:

Codice (Java): [Seleziona]
private void sendSMS(String phoneNumber, String message)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, SMS.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, pi, null);        
    }    
« Ultima modifica: 19 Luglio 2011, 15:13:42 CEST da Ricky` »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Invio di un sms tramite intent e Asynctask
« Risposta #5 il: 19 Luglio 2011, 15:14:01 CEST »
0
bovello usa il tasto code per formattare il codice ;)

Offline Improving

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Google+
    • lorenz522
    • Mostra profilo
  • Dispositivo Android:
    Android HTC Desire Z
  • Play Store ID:
    Lorenzo Del Soldato
  • Sistema operativo:
    Ubuntu Linux 11.04
Re:Invio di un sms tramite intent e Asynctask
« Risposta #6 il: 19 Luglio 2011, 16:51:33 CEST »
0
Citazione
Però se devi inviare un SMS più o meno in automatico, perchè non lo invii direttamente dalla tua app?

Hai ragione anche te, in effetti mi sa che farò così, in questo modo il controllo lo tengo io.
Sai cosa? non capire come mai succedono certe cose, mi manda nei pazzi  :-)
thanks

Offline bovello

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +2
    • Mostra profilo
    • Bovello
  • Dispositivo Android:
    San Francisco
  • Play Store ID:
    Bovello
  • Sistema operativo:
    Windows 7, Mac OS Snow Leopard
Re:Invio di un sms tramite intent e Asynctask
« Risposta #7 il: 19 Luglio 2011, 17:44:28 CEST »
0
ok Ricky, pardon  ;-)

Improving a disposizione  :-)

Offline Improving

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Google+
    • lorenz522
    • Mostra profilo
  • Dispositivo Android:
    Android HTC Desire Z
  • Play Store ID:
    Lorenzo Del Soldato
  • Sistema operativo:
    Ubuntu Linux 11.04
Re:Invio di un sms tramite intent e Asynctask
« Risposta #8 il: 21 Luglio 2011, 16:52:10 CEST »
0
Alla fine ho fatto come suggeriva bovello, mi sono creato la mia activity che manda l'sms... e tutto funziona..
rimane il mistero del perché chiamando il programma "ufficiale" di invio sms si pianta
lo metteremo tra i misteri insoluti dll'umanità, dopo l'omicidio kennedy c'è questo   :-P


grazie a tutti