Sms senden und empfangen?

  • 1 Antworten
  • Letztes Antwortdatum
E

Extremefall

Ambitioniertes Mitglied
3
Hallo,
ich probiere grade eine SMS zu senden und anschließend zu empfangen. Später sollen bytes gesendet werden. Mein aktueller Code sieht wie folgt aus:
Code:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;



import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.view.Menu;
import android.widget.Toast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class MainActivity extends Activity {

	private final BroadcastReceiver  receiver
    = new BroadcastReceiver() { 
		
			public void onReceive(Context cxt, Intent intent)
			{
				if(intent.getAction().equals("android.intent.action.DATA_SMS_RECEIVED"))
				{
					Toast.makeText(cxt, "Hallo", Toast.LENGTH_LONG).show();

					Bundle bundle = intent.getExtras();
					Object messages[] = (Object[]) bundle.get("pdus");
					SmsMessage smsMessage[] = new SmsMessage[messages.length];
					
					for (int n = 0; n < messages.length; n++){
						smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
					byte[] data = smsMessage[n].getUserData();
					}
					//Daten verarbeiten
				}
			}
	};
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		IntentFilter filter = new IntentFilter();
		filter.addDataAuthority("*", "90");
		filter.addDataScheme("sms");	    
		String SMS_RECEIVED ="android.provider.Telephony.SMS_RECEIVED";
		getApplicationContext().registerReceiver(receiver, new IntentFilter(SMS_RECEIVED));	
	    try {
			sendMessage(compress("Hello"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void onReceive(Context cxt, Intent intent)
	{
		if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
		{
			Bundle bundle = intent.getExtras();
			Object messages[] = (Object[]) bundle.get("pdus");
			SmsMessage smsMessage[] = new SmsMessage[messages.length];
			
			for (int n = 0; n < messages.length; n++)
				smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
			
			String toast = "Received SMS from: " + smsMessage[0].getDisplayOriginatingAddress();
			toast += "\nMessage: " + smsMessage[0].getDisplayMessageBody();
			
			Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_LONG).show();
		}
	}
	public void sendMessage(final byte[] message) {
	    //define the phone number
	    final  short port = 90;
	    final String phoneNumber = "01**********";
	    //intent broadcasted when the SMS is sent
	    final PendingIntent sendIntent = PendingIntent.getBroadcast(
	            getApplicationContext(), 0, new Intent(this,MainActivity.class), 0);
	    //intent broadcasted when the SMS is received
	    final PendingIntent delivery = PendingIntent.getBroadcast(
	    		getApplicationContext(), 0, new Intent(this,MainActivity.class), 0);
	    //send data
	    final SmsManager smsManager = SmsManager.getDefault();
	    final String testmessage = new String(message, Charset.forName("ISO-8859-1"));

	    smsManager.sendDataMessage(phoneNumber, testmessage, port,
	            message, sendIntent, delivery);
	}
		}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
	
}
Leider scheint die Nachricht nicht gesendet oder empfangen zu werden. Wisst ihr vielleicht, was ich falsch mache? Die Nachricht wird natürlich an meine eigene Handynummer geschickt. Kann man irgendwie überprüfen, ob die Nachricht gesendet wurde und besser die Fehlerquelle ausmachen? Es gibt keine Fehlermeldung und die Permissions sind gesetzt.

Der ursprüngliche Beitrag von 16:16 Uhr wurde um 16:33 Uhr ergänzt:

Wenn ich eine Nachricht aus der SMS App an meine Nummer schicke, reagiert der Broadcastreceiver und es klappt. Also scheint die Nachricht nicht gesendet zu werden. Aber wieso?
 
Ich habe deinen Code getestet, doch obwohl ich eine Bestätigung habe, dass die SMS ankam(ist eingeflattert in der normalen SMS-App), löst der Code nicht aus, wenn ich mir den Text in ein TextView schreiben lassen will...
Falls du das ganze mittlerweile gelöst hast, würde ich dich bitten mir zu helfen das ganze in Gang zu bekommen.
Habe alle möglichen Dinge probiert an Beispielen reinzufriemeln in meine app -alles vergebens :-(
 
Zurück
Oben Unten