Ich möchte phoneNo
im Rahmen meiner onReceive
Methode erkannt werden. Was muss ich tun ? Ich dachte, es so zu erklären würde es tun, aber keine Freude:Warum wird meine Zeichenfolge in meinem Broadcast-Empfänger nicht erkannt - SMS-Code senden
public class MainActivity extends Activity {
Button sendBtn;
EditText txtphoneNo;
String phoneNo;
// register a broadcast receiver
private BroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBtn = (Button) findViewById(R.id.btnSendSMS);
txtphoneNo = (EditText) findViewById(R.id.editText);
phoneNo = txtphoneNo.getText().toString(); etc etc....
Derzeit mein Code sieht aus wie unten. Wenn der Rundfunkempfänger erkennt eine empfangene SMS I logcat drucken möchten:
System.out.println(origNumber);
System.out.println(phoneNo);
Aber ich kann nicht phoneNo
in der gesamten Tätigkeit anerkannt machen, nur im Rahmen von sendSMSmessage.
public class MainActivity extends Activity {
Button sendBtn;
EditText txtphoneNo;
EditText txtMessage;
// register a broadcast receiver
private BroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBtn = (Button) findViewById(R.id.btnSendSMS);
txtphoneNo = (EditText) findViewById(R.id.editText);
txtMessage = (EditText) findViewById(R.id.editText2);
sendBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMSMessage();
}
});
IntentFilter filter = new IntentFilter();
// the thing we're looking out for is received SMSs
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent)
{
//do something based on the intent's action
Bundle extras = intent.getExtras();
if (extras == null)
return;
Object[] pdus = (Object[]) extras.get("pdus");
SmsMessage msg = SmsMessage.createFromPdu((byte[]) pdus[0]);
String origNumber = msg.getOriginatingAddress();
System.out.println(origNumber);
// I want to print phoneNo here!!!!
// System.out.println(phoneNo);
}
};
registerReceiver(receiver, filter);
}
protected void sendSMSMessage() {
Log.i("Send SMS", "");
String phoneNo = txtphoneNo.getText().toString();
String message = txtMessage.getText().toString();
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show();
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again.", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
if (receiver != null) {
unregisterReceiver(receiver);
receiver = null;
}
super.onDestroy();
}
}
Ha. Ich dachte, ich hätte es so versucht. In jedem Fall, kopieren und fügen Sie Ihren Code und jetzt scheint es gut zu funktionieren. – CHarris