3

私のアプリでは、インターネット接続を継続的にチェックしています。任意の時点でインターネットがない場合、ユーザーはトースト メッセージを受け取ります。

このために、NetworkStateReceiverクラスを拡張するクラスを作成していBroadcastReceiverます。

Java ファイル:

public class NetworkStateReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent); // Here I'm getting the error mentioned below
        Log.d("app", "Network connectivity change");
        if (intent.getExtras() != null) {
            NetworkInfo ni = (NetworkInfo) intent.getExtras().get(
                    ConnectivityManager.EXTRA_NETWORK_INFO);
            if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) {
                Log.i("app", "Network " + ni.getTypeName() + " connected");
            }
        }
        if (intent.getExtras().getBoolean(
                ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
            Log.d("app", "There's no network connectivity");
        }
    }
}

エラー:

タイプ BroadcastReceiver の抽象メソッド onReceive(Context, Intent) を直接呼び出すことはできません

これは、アプリケーション内の Android マニフェスト ファイルに入れたことです。

<application>    
    ....
    <receiver android:name=".NetworkStateReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
    ....
</application>

これは私が使用した許可です:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 

でこのエラーが発生するのはなぜsuper.onReceive(context, intent);ですか?どうすれば解消できますか?

4

1 に答える 1

4

行を削除しますsuper.onReceive(context, intent)。とにかく、基本実装は何もしません (これは抽象メソッドです)。

于 2013-04-07T05:47:23.487 に答える