SMS auslesen

S

suchti12

Neues Mitglied
0
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();
		        		
		        	}
		                    
		        }
		    }
	      
	}
 
Stichwort String vergleiche

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
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????
 
stichwort logcat
 
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
 
naja wenn da steht feinactivity.java:76 heißt das zeile 76
 
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
 
tja dann wirst wohl debuggen müssen, wenn du da keinen fehler findest.

hilfs[1] wirds dann wohl nicht geben.
 
Das ist mir schon klar deshalb war ja meine frage ob die SMS so eingelesen wird wie ich mir das vorstelle
 
tja debug das ganze halt. schau was zu welchem zeitpunkt wo enthalten ist usw
 
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?
 
frag google

oder mach logausgaben.
 

Ähnliche Themen

H
Antworten
2
Aufrufe
1.283
Hcman
H
M
  • maksimilian
Antworten
8
Aufrufe
1.255
jogimuc
J
V
Antworten
2
Aufrufe
916
Vultan
V
Zurück
Oben Unten