1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

SMS auslesen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von suchti12, 03.04.2012.

  1. suchti12, 03.04.2012 #1
    suchti12

    suchti12 Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2011
    Hy Leute, ich möchte gerne meine SMS (wenn sie gerade reinkommen) überprüfen ob die nummer zu meiner vorgegebenen nummer stimmt und dann weiter verarbeiten also z.B.: SMS von 645 --> nummer == 645 --> message to String

    Ich hab jetzt mal folgenden Code aber da dürfte noch der ein oder andere Fehler drinnen sein, bzw. wie mache ich das die app im hintergrund läuft und auf die sms schön wartet

    Code:
    public abstract class SMSReadActivity extends Activity 
    {
    
       
    	
    	public String message ="";
    	public String phonenumber ="06644077409";
    	public String adress="";
    	
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
        }
    	public void onReceive(Context context, Intent intent) 
    	{
    		
    		
    		Bundle bundle = intent.getExtras();
    
    		if (bundle != null) {
    		        Object[] pdusObj = (Object[]) bundle.get("pdus");
    		        SmsMessage[] messages = new SmsMessage[pdusObj.length];
    
    		        // getting SMS information from Pdu.
    		        for (int i = 0; i < pdusObj.length; i++) {
    		                messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
    		        }
    
    		        for (SmsMessage currentMessage : messages) 
    		        {
    		        	if (phonenumber == currentMessage.getDisplayOriginatingAddress() ) // number of Sender
    		        	{
    		        		message = currentMessage.getDisplayMessageBody(); // Text Message
    		        		this.getAdress();
    		        		
    		        	}
    		                    
    		        }
    		    }
    	      
    	}
     
  2. swordi, 03.04.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    Stichwort String vergleiche

    Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
     
  3. suchti12, 03.04.2012 #3
    suchti12

    suchti12 Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2011
    Code:
    package at.FFEIN;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    import android.webkit.WebView;
    import android.widget.EditText;
    
    public class FFEINActivity extends Activity {
        /** Called when the activity is first created. */
    	public String message ="";
    	public String phonenumber ="0664407****";
    	public String adress="";
    
    	
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            final WebView web = (WebView)findViewById(R.id.webi);
            this.getAdress();
            if (adress != "")
            {
            	web.loadUrl("www.********.at/FFEIN/read.php?message="+ adress);
            }
           
            
            
        }
    	public void onReceive(Context context, Intent intent) 
    	{
    		
    		
    		Bundle bundle = intent.getExtras();
    
    		if (bundle != null) {
    		        Object[] pdusObj = (Object[]) bundle.get("pdus");
    		        SmsMessage[] messages = new SmsMessage[pdusObj.length];
    
    		        // getting SMS information from Pdu.
    		        for (int i = 0; i < pdusObj.length; i++) {
    		                messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
    		                
    		        }
    
    		        for (SmsMessage currentMessage : messages) 
    		        {
    		        	
    		        	if (phonenumber == currentMessage.getDisplayOriginatingAddress() ) // number of Sender
    		        	{
    		        		message = currentMessage.getDisplayMessageBody(); // Text Message
    		        	   this.getAdress();
    		        	  
    		        		
    		        	}
    		                    
    		        }
    		    }
    	      
    	}
    	public  String getAdress()
    	{
    		this.onReceive(getBaseContext(), getIntent());
    		
    		String hilfs1 [] = message.split("\\:");
    		String bezeichnung [] = {"B21", "B2", "T2", "T3","B1","B3","T1"}; // Taktische Bezeichnungen
    		for (int i=0; adress==""; i++ )
    		{
    		final Pattern searchRex = Pattern.compile(bezeichnung[i]);
    		Matcher findPairs = searchRex.matcher(hilfs1[1]);
    		if ( findPairs.find())
    			 {
    			  String hilfs2 [] = hilfs1[1].split(bezeichnung[i]);
    			  adress = hilfs2[0];
    			  return adress;
    			 }
    	    }
    		return adress;
    	}
    
        
    
    	}
    
    Hab jetzt folgenden Code in meine Activity class

    mein Mainfest ist diesen hier:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="at.FFEIN"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk android:minSdkVersion="8" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <uses-permission android:name="android.permission.RECEIVE_SMS" />
            <uses-permission android:name="android.permission.INTERNET" />
            <activity
                android:name=".FFEINActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    Ich hab meine APP jetzt so programmiert das wenn eíne neue SMS kommt wird überprüft ob die Nummer übereinstimmt, wenn ja wird sie dann in einen String eingelsen gesplitet und es wird eine Adresse ausgelen, doch aus welchen grund auch immer stürzt meine App aktuell ab????
     
  4. swordi, 03.04.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    stichwort logcat
     
  5. suchti12, 03.04.2012 #5
    suchti12

    suchti12 Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2011
    Code:
    04-03 09:55:24.327: E/AndroidRuntime(280): FATAL EXCEPTION: main
    04-03 09:55:24.327: E/AndroidRuntime(280): java.lang.RuntimeException: Unable to start activity ComponentInfo{at.FFEIN/at.FFEIN.FFEINActivity}: java.lang.ArrayIndexOutOfBoundsException
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.os.Looper.loop(Looper.java:123)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at java.lang.reflect.Method.invokeNative(Native Method)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at java.lang.reflect.Method.invoke(Method.java:521)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at dalvik.system.NativeStart.main(Native Method)
    04-03 09:55:24.327: E/AndroidRuntime(280): Caused by: java.lang.ArrayIndexOutOfBoundsException
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at at.FFEIN.FFEINActivity.getAdress(FFEINActivity.java:76)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at at.FFEIN.FFEINActivity.onCreate(FFEINActivity.java:27)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    04-03 09:55:24.327: E/AndroidRuntime(280): 	... 11 more
    
    Das ist mein LogCat ich seh zwar das ich Fehler habe, kann aber nicht wirklich darauf zurücklschlißen wo sich diese befinden
     
  6. swordi, 03.04.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja wenn da steht feinactivity.java:76 heißt das zeile 76
     
  7. suchti12, 03.04.2012 #7
    suchti12

    suchti12 Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2011
    Code:
    Matcher findPairs = searchRex.matcher(hilfs1[1]);
    Dann müsste der Fehler hier liegen ich kann hier jetzt keinen Fehler finden, was ich mir vorstellen könnte wer das in hilfs1[1] nicht drinnen steht was ich erwarte!

    Jetzt hab ich eine Frage, wenn du dir meinen Code ansiehst, ich sag dir mal was ich deke was das ganze macht was ich da programmiert habe:
    Wenn eine SMS reinkommt(nur wenn sie neu reinkommt nicht wenn Sie abgelegt ist) wird Sie mit der Nummer verglichen die ich oben eingebe, stimmt diese überein wird die SMS weiterverarbeitet und das Programm wartet so lange bis eine neu SMS kommt
     
  8. swordi, 03.04.2012 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    tja dann wirst wohl debuggen müssen, wenn du da keinen fehler findest.

    hilfs[1] wirds dann wohl nicht geben.
     
  9. suchti12, 03.04.2012 #9
    suchti12

    suchti12 Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2011
    Das ist mir schon klar deshalb war ja meine frage ob die SMS so eingelesen wird wie ich mir das vorstelle
     
  10. swordi, 03.04.2012 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    tja debug das ganze halt. schau was zu welchem zeitpunkt wo enthalten ist usw
     
  11. suchti12, 03.04.2012 #11
    suchti12

    suchti12 Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2011
    wie kann man Android bitte Debugen, der Startet ja immer den emulator und wenn ich einfach mal auf Debugen klick tut sich ja auch nichts?
     
  12. swordi, 03.04.2012 #12
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    frag google

    oder mach logausgaben.
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android programmierung sms auslesen