1

ユーザーが 3g ネットワークまたは 2G ネットワークに移動したとき、またはサービスが提供されていないエリアにいるときを検出する必要があります。そのための標準のAndroidブロードキャストインテントはありますか?

現在、サービスで毎分次のコードをポーリングしています。

TelephonyManager tm=(TelephonyManager) getSystemService(TELEPHONY_SERVICE); if(tm.getNetworkType()==TelephonyManager.NETWORK_TYPE_EDGE){ }

しかし、これは適切な方法ではなく、空腹になる可能性があります。リスナーまたはブロードキャストの意図によってのみトリガーされた方がよいでしょう。

4

1 に答える 1

0

ConnectivityManager.CONNECTIVITY_ACTIONこれを行うことができるOnRecieveにインテントを登録する必要があります。

if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
    NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
    String typeName = info.getTypeName();
}

編集:インテントフィルタータグ「android.net.conn.CONNECTIVITY_CHANGE」で実際の文字列を使用する必要があります。このドキュメントも確認してください

于 2012-09-02T00:05:57.697 に答える