2017-02-18 14 views
0

次のような流れを考えてみましょう。Androidでアプリの使用途中でユーザーがインターネットに接続したときにバナー広告を表示するにはどうすればよいですか?

1)デバイスにインターネット接続がない場合、ユーザーがアプリを開きます。 (バナー広告は表示されません)

2)ユーザーはインターネットに接続します。

上記の状況では、私のバナー広告はインターネット接続の確立に自動的にはロードされません。ステップ2の後にバナー広告を表示します。

これを行うにはどのような方法が最適ですか?

さらに詳しく説明すると、バナー広告を今すぐアプリに表示するには、今回はインターネット接続がある状態でアプリを再起動する必要があります。言い換えれば、インターネット接続なしでアプリを起動すると、バナー広告は表示されません。

+0

をチェックアウトすることがあり関数を使用して、コーディングを繰り返しながら基本的なチェックを行います。あなたが私たちに言ったやり方は、コード内ではちょっと乱雑です。 – user7568042

答えて

2

あなたはこのクラスを使用して、インターネット接続状態の変化は、インターネット接続が広告の呼び出しを変更し、これまで

public class NetworkStateReceiver extends BroadcastReceiver { 

protected List<NetworkStateReceiverListener> listeners; 
protected Boolean connected; 

public NetworkStateReceiver() { 
    listeners = new ArrayList<NetworkStateReceiverListener>(); 
    connected = null; 
} 

public void onReceive(Context context, Intent intent) { 
    if(intent == null || intent.getExtras() == null) 
     return; 

    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = manager.getActiveNetworkInfo(); 

    if(ni != null && ni.getState() == NetworkInfo.State.CONNECTED) { 
     connected = true; 
    } else if(intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) { 
     connected = false; 
    } 

    notifyStateToAll(); 
} 

private void notifyStateToAll() { 
    for(NetworkStateReceiverListener listener : listeners) 
     notifyState(listener); 
} 

private void notifyState(NetworkStateReceiverListener listener) { 
    if(connected == null || listener == null) 
     return; 

    if(connected == true) 
     listener.networkAvailable(); 
    else 
     listener.networkUnavailable(); 
} 

public void addListener(NetworkStateReceiverListener l) { 
    listeners.add(l); 
    notifyState(l); 
} 

public void removeListener(NetworkStateReceiverListener l) { 
    listeners.remove(l); 
} 

public interface NetworkStateReceiverListener { 
    public void networkAvailable(); 
    public void networkUnavailable(); 
} 
} 

hereを完全に利用状況を見ると(それがあるとしてだけでこのクラスを追加)することができます

またはあなたも、私はあなたのコードを再加工する必要が想像したりanothを実装this質問

関連する問題