私のアプリケーションは、Broadcastlistener を使用して Connectivity-State を探します。電話がオフラインの場合、スナックバーが表示されます。スナックバーには、ネットワーク設定を開くアクションがあります。
これをクリックすると、ネットワーク設定が開かれました。インターネットをオンにせずにアプリに戻ると、Snackbar は呼び出されますが、再び表示されません (確認しました!)。
Snackbar を null に設定して再度初期化すると、機能します!
主な活動:
@Override
protected void onResume() {
super.onResume();
registerReceiver(networkListener, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(networkListener);
}
@Override
public void ToggleSnackbar(boolean ShowHide) {
if (ShowHide) {
snbInternetState.show();
}
else {
snbInternetState.dismiss();
}
bOnline = ShowHide;
}
ネットワークリスナー:
public class NetworkListener extends BroadcastReceiver {
private SnackbarInterface snbInterface;
public NetworkListener(SnackbarInterface snbInterface) {
this.snbInterface = snbInterface;
}
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null || !ni.isConnectedOrConnecting()) {
snbInterface.ToggleSnackbar(true);
}
else if (ni != null && ni.isConnected()) {
snbInterface.ToggleSnackbar(false);
}
}
public interface SnackbarInterface {
void ToggleSnackbar(boolean ShowHide);
}
}
この問題を解決する方法を知っている人はいますか?
ありがとう!