2016-03-19 36 views
0

arasındaki bilgi nasıl iletilir Bir SMS uygulamasında, BroadcastReceiver öğesinden bir dizenin değerini ana yönteme aktarmak istiyorum. İşte BroadcastReceiver ve ana yöntem

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(); 
 
} 
 

 
}

SMS alıcısı kodu

Ben ana Yöntemin içine Dize almak için nasıl bilmek istiyorum lütfen

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); 
 
     } 
 

 

 
    } 
 
}
olduğunu.

+0

yılında bundan sonra

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); } 

sizin ReceptorSMS sınıfında bu

gibi yapmalıdır daha herhangi SMS aldığınızda aktiviteyi başlamak istiyorum varsayalım 'Bu BroadcastReceiver, 'Activity' çalışana ve çalışmaya başlayana kadar herhangi bir yayın almayacak, hangi noktada 'onCreate()' yöntemi zaten bitti. –

+0

@Mike M ile katılıyorum ve kayıt olmanız gerekiyor Kayıt Olun –

+0

daha fazla kod ve doğru çözümü almak için bilgi gerekiyor @Josue Manuek Pareja Contreras –

cevap

1

Ben size onCreate

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

BroadcastReceiver intentRecieverLA üzerindeki mesajları almak ve "onCreate" öğesindeki niyetini kullanmadan String MENSAJE'nin içeriğini onCreate öğesine iletmek istiyorum. Aswer için teşekkürler. –