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:
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 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;
}
}
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?