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);
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage