BroadcastReceiver
を内部クラスとして使用してネットワークの状態を追跡しようとしていますが、タイトルに例外があります。この問題を解決するにはどうすればよいですか?
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final Android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final Android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
setupData();
Log.d("Netowk Available ", "Flag No 1");
}
}
}
きみの
インナーブロードキャストレシーバーは静的である必要があります(マニフェストを介して登録されるため)
OR
非静的ブロードキャストレシーバーは、親クラス内で登録および登録解除する必要があります
このため。
クラス内で登録せずに、インナーブロードキャストレシーバーを使用していました。静的にしてマニフェストに登録するか、非静的にして親クラス内で登録および登録解除します。
静的でない内部クラスは、AndroidManifest.xml
を介して登録できません。次のいずれかを実行できます。
このスレッド で概説されているように動的に登録し、空のコンストラクターを削除します。
または、
内部クラスをstaticにして、AndroidManifext.xml
に登録します。
receiverクラスを次のように静的にします。
public [static] class ReceiverClass extends BroadcastReceiver