为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

萧十郎 2019-11-13 15:48:32
我需要接收有关网络连接,断开等网络操作的广播。为此,我正在使用广播接收器。任何人都可以告诉我,针对网络事件我需要捕获哪种意图动作,现在根据我在Internet上进行的搜索,我正在使用android.net.ConnectivityManager.CONNECTIVITY_ACTION。这是我的广播接收器类:import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class NetworkStateReceiver extends BroadcastReceiver {@Overridepublic 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>如果我错了或者如果有其他方法可以捕获网络事件,请建议我采取正确的意图操作。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

这是一个工作示例:


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


<receiver android:name=".receiver.ConnectivityReceiver">

    <intent-filter>

        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

    </intent-filter>

</receiver>


public class ConnectivityReceiver extends BroadcastReceiver {


    @Override

    public void onReceive(Context context, Intent intent) {

        Log.d(ConnectivityReceiver.class.getSimpleName(), "action: "

                + intent.getAction());

    }


}


查看完整回答
反对 回复 2019-11-13
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 437 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信