0

Ich möchte Methode in Hauptaktivität von Broadcast Receiver aufrufen. Das ist mein MainActivityCall-Methode in MainActivity von BroadcastReceiver - Android

public class MainActivity extends ActionBarActivity { 

     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
     } 

    public void DisplayConn(){ 
     if(isNetworkStatusAvailable(getApplicationContext())) { 

      Toast.makeText(getApplicationContext(), "internet is available", Toast.LENGTH_LONG).show(); 
     } else { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("Error"); 
      builder.setMessage("No Network Connection").setCancelable(false) 

        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          finish(); 
         } 
        }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 
     } 
    } 
} 

Und das ist mein BroadcastReceiver

public class ConnectionReceiver extends BroadcastReceiver { 

    public ConnectionReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     MainActivity myAct = new MainActivity(); 
     myAct.DisplayConn(); 
    } 
} 

Also, jedes Mal wenn meine Sendung haben erhalten es werden die Methoden in meinem MainActivity nennen. Danke im Voraus.

+0

@ jvpintang: Warum registrieren Sie keine Sendung in Ihrer Aktivität? – dex

Antwort

0

Sie können LocalBroadcast Manager zum Senden einer lokalen Sendung von Ihrem ConnectionReceiver verwenden. In der MainActivity können Sie Ihren Empfänger registrieren, um lokale Sendungen zu empfangen. Sie können eine lokale Übertragung senden, wenn onReceive aufgerufen wird, die von Ihrer Aktivität empfangen wird. Dann können Sie in Ihrer Aktivität die Methode aufrufen, wenn Sie diese lokale Sendung erhalten. Diese Übertragung erfolgt nur lokal für Ihre App. So ist es auch sicher. Sie können hier sehen, wie man es benutzt: how to use LocalBroadcastManager?.

LocalBroadcastManager ist ein Hilfsprogramm zum Registrieren und Senden von Broadcasts von Intents an lokale Objekte in Ihrem Prozess. Dies hat eine Reihe von Vorteilen gegenüber dem Senden globaler Broadcasts mit sendBroadcast (Intent). Einer davon ist, dass die von Ihnen ausgestrahlten Daten Ihre App nicht verlassen. Sie müssen sich also keine Gedanken über private Daten machen.

Verwandte Themen