So übergeben Sie Daten von BroadcastReceiver an Activity ohne in onCreate ()
Ich habe ein ernstes Problem mit der Weitergabe von Daten vonBroadcastReceiver
zu einemActivity
. Lassen Sie sich mein Problem genau ansehen. Ich habe ein klassePhoneStateReceiver extends BroadcastReceiver
, von dem früher ein eingehendes Telefon empfangen wurde.
public class PhoneStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
System.out.println("Receiver start");
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
Das eingehende Telefon wird an ein @ gesendeActivity
, namensReceiverActivity
. DasReceiverActivity
empfängt das eingehende Telefon und sendet es über eine Socket-Verbindung an einen Server. Die Socket-Verbindung wird im @ initialisieonCreate
Funktion. Ich googelte und fand Server Weg, um die Daten von @ zu übergebBroadcastReceiver
zu einemActivity
. Üblicherweise werden Daten über @ gesendeputExtra
function und callstartActivity
. Der Weg ruft jedoch dasonCreate
erneut und verbinden Sie dann den Socket, zeichnen Sie die Benutzeroberfläche erneut. Daher ist es in meinem Fall nicht hilfreich.
In meinem Ziel, Wenn das Telefon einen eingehenden Anruf empfängt, wird der eingehende Anruf an das @ gesendeReceiverActivity
. DasReceiverActivity
empfängt die Nachricht und ruft die Sendefunktion auf. Welches ist der beste Weg, dies zu tun? Vielen Dan
Der übliche Weg, Daten von einem @ zu übergebBroadcastReceiver
zu einerReceiverActivity
dass ich wie folgt verwendet
Im PhoneStateReceiver class:
Intent intent_phonenum = new Intent(context, ReceiverActivity.class);
intent_phonenum.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent_phonenum.putExtra("phone_num", incomingNumber);
context.startActivity(intent_phonenum);
Im ReceiverActivity class:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connect_socket();
Intent intent = getIntent();
phone_num = intent.getStringExtra("phone_num");
send(phone_num);
}