Android SDK中网络事件的意图动作

我需要接收有关网络连接,断开等网络操作的广播。为此,我正在使用广播接收器。任何人都可以告诉我,针对网络事件我需要捕获哪种意图动作,现在根据我在Internet上进行的搜索,我正在使用android.net.ConnectivityManager.CONNECTIVITY_ACTION。


这是我的广播接收器类:


import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;


public class NetworkStateReceiver extends BroadcastReceiver {


@Override

public void onReceive(Context context, Intent intent) {

    // TODO Auto-generated method stub



    if (intent.getAction().equals(

            android.net.ConnectivityManager.CONNECTIVITY_ACTION)) {


        // do something..

    }

}

}

并且我还添加了访问网络状态的权限:


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

这是我在清单文件中声明此类的方式


<receiver class=".NetworkStateReceiver" android:name=".NetworkStateReceiver">

    <intent-filter>

            <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" />

    </intent-filter>

</receiver>

如果我错了或者如果有其他方法可以捕获网络事件,请建议我采取正确的意图操作。


萧十郎
浏览 401回答 3
3回答

撒科打诨

这是一个工作示例:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><receiver android:name=".receiver.ConnectivityReceiver">&nbsp; &nbsp; <intent-filter>&nbsp; &nbsp; &nbsp; &nbsp; <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />&nbsp; &nbsp; </intent-filter></receiver>。public class ConnectivityReceiver extends BroadcastReceiver {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onReceive(Context context, Intent intent) {&nbsp; &nbsp; &nbsp; &nbsp; Log.d(ConnectivityReceiver.class.getSimpleName(), "action: "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + intent.getAction());&nbsp; &nbsp; }}

犯罪嫌疑人X

关于昨天的评论,我注意到这是不准确的。看起来,至少在某些情况下,如果没有连接,则仅在Intent Extras中添加EXTRA_NO_CONNECTIVITY。因此,使用getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,false)访问它应该会产生一个布尔值,如果完全没有连接,则为true;如果存在任何连接,则为false。此外,此答案中的代码是反模式,因为分析是有限的。它不会检测到蓝牙网络共享,USB网络共享或LAN连接。不要那样做&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP