2016-11-19 9 views
-4

Dies ist mein Code von brodcast EmpfängerLesen letzte incomming SMS vom Handy Posteingang

Bundle myBundle = intent.getExtras(); 
    SmsMessage [] messages = null; 
    String strMessage = ""; 

    if (myBundle != null) 
    { 
     Object [] pdus = (Object[]) myBundle.get("pdus"); 
     messages = new SmsMessage[pdus.length]; 

     for (int i = 0; i < messages.length; i++) 
     { 
      messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      strMessage += "SMS From: " + messages[i].getOriginatingAddress(); 
      strMessage += " : "; 
      strMessage += messages[i].getMessageBody(); 
      strMessage += "\n"; 
     } 

     Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show(); 
     Intent inten = new Intent(context, MainActivity.class); 
     inten.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     inten .putExtra("strMessage", strMessage); 
     context.startActivity(inten); 

ich Werte in meiner Haupttätigkeit wie folgt erhalten: -

Intent inten= getIntent(); 

String strMessage = inten.getStringExtra("strMessage"); 
Toast.makeText(getApplicationContext(),strMessage,Toast.LENGTH_LONG).show(); 

aber, null Wert bekommen, Bitte führe mich richtig, denn ich bin neu dafür.

+0

Möchten Sie die letzte Nachricht aus Ihrer Datenbank abrufen oder auf eingehende SMS warten? –

+0

Ich möchte auf eingehende neue SMS hören, bedeutet, wenn neue Nachricht in Telefon zu dieser Zeit kommt, möchte ich es in meiner Anwendung lesen. – Zilu

+0

@Zilu Verwenden Sie 'BroadcastReceiver', um eingehende Nachrichten zu hören. Und 'onReceive()' -ing die Nachricht, senden Sie es an Ihre App – rafid059

Antwort

1

Sie müssen nur eine BroadcastReceiver mit IntentFilter von "android.provider.Telephony.SMS_RECEIVED" registrieren. Dann können Sie eine empfangene Nachricht von der Absicht, wie diese:

try { 
     Object[] messages = (Object[]) intent.getSerializableExtra("pdus"); 
     for (Object msg : messages) { 
      byte[] bytes = (byte[]) msg; 
      SmsMessage message = SmsMessage.createFromPdu(bytes); 
      String messageBody = message.getDisplayMessageBody(); // this is your SMS message body 
     } catch (Exception e) { 
      //catch exception here 
     } 

Sie benötigen einen <uses-permission android:name="android.permission.RECEIVE_SMS"/> auf Ihre AndroidManifest.xml und Griff Runtime permissions for API > 23 hinzuzufügen.

+0

Vielen Dank .. Ich habe es verwendet, aber null Wert erhalten.Bitte geben Sie mir eine andere Möglichkeit, nur neue eingehende Nachricht zu bekommen, und ich habe auch Brodcast Receiver-Klasse erstellt, aber ich weiß nicht, wie man es in meiner Mainactivity bekommen. – Zilu

+0

müssen Sie so etwas in Ihrer 'onStart()' Methode tun: 'IntentFilter filter = new IntentFilter (" android.provider.Telephony.SMS_RECEIVED "); registerReceiver (Empfänger, Filter); 'rufen Sie dann' unregisterReceiver (Empfänger); 'in Ihrem' onStop() '. Empfänger ist ein Feld in Ihrer Aktivität –

Verwandte Themen