2016-03-19 3 views
0

In einer SMS-Anwendung möchte ich einen Wert einer Zeichenfolge von de BroadcastReceiver an die Hauptmethode übergeben.Wie übermittele ich Informationen zwischen BroadcastReceiver und Hauptmethode

public class LucesAlarma extends AppCompatActivity { 
 

 
IntentFilter intentFilterLA; 
 

 
    private BroadcastReceiver intentRecieverLA = new BroadcastReceiver() 
 
     { 
 
      @Override 
 
      public void onReceive(Context context, Intent intent) 
 
      { 
 

 
       final String MENSAJE = intent.getExtras().getString("mensaje"); 
 
       String NUMERODELMENSAJE = intent.getExtras().getString("numero"); 
 
      } 
 
     }; 
 

 
    @Override 
 
     protected void onCreate(Bundle savedInstanceState) 
 

 
     { 
 
    super.onCreate(savedInstanceState); 
 
    setContentView(R.layout.activity_luces_alarma); 
 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
 
    intentFilterLA = new IntentFilter(); 
 
    intentFilterLA.addAction("SMS_RECEIVED_ACTION"); 
 
      //I want to use the String Mensaje from the BroadcastReceiver here 
 
     } 
 

 
@Override 
 
protected void onResume() 
 
{ 
 
    registerReceiver(intentRecieverLA, intentFilterLA); 
 
    super.onResume(); 
 
} 
 

 
@Override 
 
protected void onPause() 
 
{ 
 
    unregisterReceiver(intentRecieverLA); 
 
    super.onPause(); 
 
} 
 

 
}

Hier ist der SMS-Empfänger Code

public class ReceptorSMS extends BroadcastReceiver { 
 
    @Override 
 
    public void onReceive(Context context, Intent intent) 
 
    { 
 
     Bundle bundle = intent.getExtras(); 
 
     SmsMessage[]messages=null; 
 
     String str = ""; 
 
     String num = ""; 
 
     String men = ""; 
 
     if(bundle != null) 
 
     { 
 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
 
      assert pdus != null; 
 
      messages = new SmsMessage[pdus.length]; 
 
      for (int i=0 ; i<messages.length;i++) 
 
      { 
 
       messages[i]=SmsMessage.createFromPdu((byte[])pdus[i]); 
 
       num = messages[i].getDisplayOriginatingAddress(); 
 
       str += "Mensaje de" +messages[i].getOriginatingAddress(); 
 
       str += ":"; 
 
       str += messages[i].getMessageBody(); 
 
       str += "\n"; 
 
       men = messages[i].getMessageBody(); 
 

 
      } 
 
      //   Toast.makeText(context,str,Toast.LENGTH_SHORT).show(); 
 
      Intent broadcastIntent = new Intent(); 
 
      broadcastIntent.setAction("SMS_RECEIVED_ACTION"); 
 
      broadcastIntent.putExtra("sms", str); 
 
      broadcastIntent.putExtra("mensaje", men); 
 
      broadcastIntent.putExtra("numero", num); 
 
      context.sendBroadcast(broadcastIntent); 
 
     } 
 

 

 
    } 
 
}

Bitte ich möchte wissen, wie diese Zeichenfolge in das Haupt Methot zu bekommen.

+0

Das ' BroadcastReceiver "erhält keine Broadcasts, bis die' Activity' aktiv ist und zu diesem Zeitpunkt die 'onCreate()' Methode bereits ausgeführt wurde. –

+0

Ich stimme @Mike M und Sie müssen registrieren und die Registrierung Empfänger –

+0

mehr Code und Info wird benötigt, um die richtige Lösung @Josue Manuek Pareja Contreras –

Antwort

1

Ich gehe davon aus, dass Sie Aktivität gestartet werden soll, wenn jede SMS empfangen, als Sie dieses

in Ihrer ReceptorSMS Klasse tun sollten

public void onReceive(Context context, Intent intent) 
{. 
. 
. 
     Toast.makeText(context,str,Toast.LENGTH_SHORT).show(); 
     Intent broadcastIntent = new Intent(); 
     broadcastIntent .setClassName("<YOUR PACKAGE NAME>", "<YOUR PACKAGE NAME>.LucesAlarma"); 
     broadcastIntent.setAction("SMS_RECEIVED_ACTION"); 
     broadcastIntent.putExtra("sms", str); 
     broadcastIntent.putExtra("mensaje", men); 
     broadcastIntent.putExtra("numero", num); 
     context.startActivity(broadcastIntent); 
    } 

danach in onCreate

Intent intent = getIntent(); 
String sms= intent.getStringExtra("sms"); 
String men = intent.getStringExtra("mensaje"); 
String num = intent.getStringExtra("numero"); 
+0

Ich möchte die Nachrichten auf dem BroadcastReceiver intentionReceiverLA empfangen und den Inhalt von String MENSAJE an onCreate übergeben, ohne die Absicht in "onCreate" zu verwenden. Danke für die Antwort. –

Verwandte Themen