2012-04-12 5 views
-2

Ich habe eine Android-Anwendung, die Benutzername und Passwort benötigt, sendet mein Server den Benutzernamen und das Passwort an mobile per SMS.Android-Anwendung bekommen Benutzername und Passwort von SMS

Ich suchte nach einem Weg, durch den meine Anwendung die SMS lesen kann und sich automatisch mit Benutzername und Passwort in den Einstellungen konfigurieren kann, anstatt sie manuell in den Einstellungen zu konfigurieren!

Antwort

2

AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > 
    <receiver android:name=".Receiver" > 
     <intent-filter > 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 
</application> 

Receiver.java

in nativen SMS-App gezeigt
import java.util.ArrayList; 
import android.content.Context; 
import android.content.Intent; 
import android.content.BroadcastReceiver; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.telephony.SmsMessage; 

public class Receiver extends BroadcastReceiver  
{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //---get the SMS message passed in--- 
    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null;   
    if (bundle != null) 
    { 
     //---retrieve the SMS message received--- 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length];    
     for (int i=0; i<msgs.length; i++) 
     { 
     msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     

     checkSMS(context, msgs[i]); 
     } 
    } 
    } 

    void checkSMS(Context context, SmsMessage sms) 
    { 
    String msg = sms.getMessageBody().toString(); 

    } 

} 
+0

Ich nenne das wie folgt, es wird nur einmal ausgeführt und bleibt 20 Sekunden oder länger nicht am Leben. Die Nachricht wird innerhalb von 20 Sekunden gesendet. Ich möchte, dass sie mindestens 20 Sekunden lang zuhören sollte. \t 'sms.sendTextMessage (" XXXXXX ", null," MSG ", null, null); Empfänger rc = neuer Empfänger(); rc.onReceive (getContext(), neue Absicht ("android.provider.Telephony.SMS_RECEIVED")); ' – AAB

+0

Ich habe nicht verstanden, was du meinst, aber ich denke, du machst etwas falsch, du musst nicht erstellen neue Receiver-Klasse und rufen Sie rc.onreceive auf. Erstellen Sie ein Receiver.java als das Beispiel, das ich Ihnen gab, und fügen Sie Ihr Manifest diese Klasse hinzu, wie ich in meiner Antwort geschrieben habe. Als wenn Telefon ruft eine SMS von jemandem, Android-Telefonie-Framework ruft Ihre Anwendungen Receiver-Klassen OnReceive-Methode auch Ihre Anwendung ist nicht geöffnet. und Sie können tun, was Sie wollen, auf Checks-Funktion. –

1

Verwenden Sie SMS-Broadcast-Listener mit hohem priorty und auf rcv überprüfen, ob es von der Nummer, die Ihr Server zum Senden von SMS kommt, wenn ja, extrahieren Sie die Informationen aus SMS-Text und aktualisieren Sie die Konfigurationen Ihrer App entsprechend und Sie können abortBroad Gussverfahren auch verwenden, wenn Sie die SMS wollen, sollten nicht

+0

Hallo, können Sie mir bitte mit ein paar Beispielcode, d. – AAB

+0

hier ist der einfachste Code, um SMS zu erhalten http://androidsourcecode.blogspot.com/2010/10/receiving-sms-using-broadcastreceiver.html und dieser Link hat auch gute Details http://boomtech.in/entries/general/ sms-toast - using-broadcast-receiver --- retrive-kontakt-information –

Verwandte Themen