folgte ich dieses Tutorial, um Änderungen im Netzwerk zu erkennen und den Benutzer zu warnen, wenn keine Netzwerkverbindung ist:Schließen Top Aktivität von Broadcast-Receiver
http://viralpatel.net/blogs/android-internet-connection-status-network-change/
ich den Code so modifiziert, dass sie eine Aktivität eröffnet NoInternetConnection wird aufgerufen, wenn der Benutzer die Verbindung zu einem Netzwerk trennt.
Wenn der Benutzer die Verbindung mit dem Netzwerk wieder herstellt, möchte ich die NoInternetConnection-Aktivität schließen. Ich konnte das mit dem Broadcast Receiver nicht herausfinden. Irgendwelche Tipps, wie man das macht?
Hier mein Broadcast-Receiver ist:
public class NetworkChangeReceiver extends BroadcastReceiver {
private static final String TAG = NetworkChangeReceiver.class.getSimpleName();
@Override
public void onReceive(final Context context, final Intent intent) {
String status = NetworkUtil.getConnectivityStatusString(context);
Log.d(TAG, "status: " + status);
ActivityManager am = (ActivityManager) context.
getSystemService(Activity.ACTIVITY_SERVICE);
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();
if(status == "connected"){
if(className.toLowerCase().contains("nointernetactivity")){
// check if the No Internet Activity context is visible
Log.d(TAG, "Close noInternetActivity");
}
}else {
if(!className.toLowerCase().contains("nointernetactivity")){
Log.d(TAG, "opening NoInternetActivity");
Intent i = new Intent(context, NoInternetActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
// Toast.makeText(context, status, Toast.LENGTH_LONG).show();
}
}
Sie könnten 'LocalBroadcastManager' dafür verwenden. Das gleiche Muster wie bei Standard-Broadcasts und 'BroadcastReceivers' - d. H., Sie müssten es nur einlegen -, aber die Broadcasts bleiben in Ihrer App und sind im Allgemeinen schneller, merklich. –