Autore Topic: problema con invio sms e getBroadcast  (Letto 1206 volte)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
problema con invio sms e getBroadcast
« il: 28 Ottobre 2011, 16:35:30 CEST »
0
ragazzi sto cercando di capire come fare in modo che la mia app possa inviare un sms con numero e testo preconfigurato tramite l'app nativa di sms..e alla fine chiuda l'app nativa di sms per tornare alla mia app..
per fare questo sto studiando i vari post del forum e alcune guide trovate in rete, ma in tutti i casi mi ritrovo con un problema nel getBroadcast..
vi posto l'esempio completo della guida :
Codice (Java): [Seleziona]
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SMS extends Activity
{
    Button btnSendSMS;
    EditText txtPhoneNo;
    EditText txtMessage;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
 
        btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
        txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
        txtMessage = (EditText) findViewById(R.id.txtMessage);
 
        btnSendSMS.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {                
                String phoneNo = txtPhoneNo.getText().toString();
                String message = txtMessage.getText().toString();                
                if (phoneNo.length()>0 && message.length()>0)                
                    sendSMS(phoneNo, message);                
                else
                    Toast.makeText(getBaseContext(),
                        "Please enter both phone number and message.",
                        Toast.LENGTH_SHORT).show();
            }

            //---sends an SMS message to another device---

            private void sendSMS(String phoneNumber, String message)
            {        
                String SENT = "SMS_SENT";
                String DELIVERED = "SMS_DELIVERED";
         
                PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
                    new Intent(SENT), 0);
         
                PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
                    new Intent(DELIVERED), 0);
         
                //---when the SMS has been sent---
                registerReceiver(new BroadcastReceiver(){
                    @Override
                    public void onReceive(Context arg0, Intent arg1) {
                        switch (getResultCode())
                        {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "SMS sent",
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                Toast.makeText(getBaseContext(), "Generic failure",
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_NO_SERVICE:
                                Toast.makeText(getBaseContext(), "No service",
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_NULL_PDU:
                                Toast.makeText(getBaseContext(), "Null PDU",
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_RADIO_OFF:
                                Toast.makeText(getBaseContext(), "Radio off",
                                        Toast.LENGTH_SHORT).show();
                                break;
                        }
                    }
                }, new IntentFilter(SENT));
         
                //---when the SMS has been delivered---
                registerReceiver(new BroadcastReceiver(){
                    @Override
                    public void onReceive(Context arg0, Intent arg1) {
                        switch (getResultCode())
                        {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "SMS delivered",
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case Activity.RESULT_CANCELED:
                                Toast.makeText(getBaseContext(), "SMS not delivered",
                                        Toast.LENGTH_SHORT).show();
                                break;                        
                        }
                    }
                }, new IntentFilter(DELIVERED));        
         
                SmsManager sms = SmsManager.getDefault();
                sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
            }
         
       
        });
       
       
       
    }    
}

il problema in questa guida e in tutte le altre proveche ho fatto e' che eclipse mi segnala un errore su .getBroadcast ..l'errore è questo:
Codice: [Seleziona]
The method getBroadcast(Context, int, Intent, int) in the type PendingIntent is not applicable for the arguments (new View.OnClickListener(){}, int, Intent, int)mi sembra strano che le guide e i vari post trovati qua e in rete mi diano lo stesso problema..
avete idea del motivo e di come posso risolvere?
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:problema con invio sms e getBroadcast
« Risposta #1 il: 29 Ottobre 2011, 19:48:31 CEST »
0
son riuscito a risolvere, ma non ho capito il motivo O_O

ho dovuto cambiare da :
Codice (Java): [Seleziona]
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
                    new Intent(SENT), 0);
a
Codice (Java): [Seleziona]
PendingIntent sentPI = PendingIntent.getBroadcast(sms.this, 0,
                    new Intent(SENT), 0);
mi sapete spiegare il motivo? le guide dicono tutte di fare come nell'esempio, ma a me funziona solo se lo cambio...
sono ancora alle prime armi e molte cose non mi sono ancora chiare :(
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:problema con invio sms e getBroadcast
« Risposta #2 il: 30 Ottobre 2011, 14:23:09 CET »
0
son riuscito a risolvere, ma non ho capito il motivo O_O

Per capire il motivo dovresti capire a cosa serve l'operatore this, prova ad approfondire l'argomento ;)