connectivitymanager - android.net.conn.CONNECTIVITY_CHANGE

时间:2011-11-14 20:01:12

标签: android android-intent

我为android.net.conn.CONNECTIVITY_CHANGE创建了一个过滤器 我确实收到了对我的广播接收者的意图。

我的问题是提出connectivity_change的原因。 API说明说:

  

发生了网络连接的变化。连接有   已经成立或失败。受影响网络的NetworkInfo是   作为额外发送;应该咨询一下,看看是什么样的   连通事件发生。

似乎我的广播接收器仅在移动网络连接/断开连接时被调用(pdp被破坏)。例如,当2g切换到3g时,它不会升起。

我可以用这个广播接收器捕获2g到3g的掉期吗? 我是否必须使用phonestatelistener来接收从2g到3g的掉期?

1 个答案:

答案 0 :(得分:4)

你需要:

permission "android.permission.READ_PHONE_STATE" //获取连接更改(2G / 3G /等) permission "android.permission.ACCESS_COARSE_LOCATION" //获取Cell / Tower更改

//Make the listener
listener = new PhoneStateListener() { 
    public void onDataConnectionStateChanged(int state, int networkType) 
    { 
       //We have changed proticols, for example we have gone from HSDPA to GPRS
       //HSDPA is an example of a 3G connection 
       //GPRS is an example of a 2G connection
    }
    public void onCellLocationChanged(CellLocation location) {
       //We have changed to a different Tower/Cell
    }
};

//Add the listener made above into the telephonyManager
telephonyManager.listen(listener, 
        PhoneStateListener.LISTEN_DATA_CONNECTION_STATE //connection changes 2G/3G/etc
        | PhoneStateListener.LISTEN_CELL_LOCATION       //or tower/cell changes 
);