Android - 广播接收器检测手机何时连接到塔?

时间:2012-11-25 03:19:24

标签: android broadcastreceiver

我需要检测GSM手机刚刚连接到网络的时间(从无法连接到手机信号塔的手机信号塔)。为此我设置广播接收器 AIRPLANE_MODE (关闭)和 BOOT_COMPLETE ,当这两个被解雇时,我会循环一段时间,直到检测到网络。但除此之外,手机可能位于

的位置
  

Cell Tower根本不可用

我怎样才能发现这种情况?

2 个答案:

答案 0 :(得分:2)

您可以使用为“android.net.conn.CONNECTIVITY_CHANGE”设置意图过滤器的BroadcastReceiver

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

在该接收器中,您可以查看意图的附加内容,以确定您是否有连接。我这样做:

@Override
public void onReceive( Context context, Intent intent )
{
    Intent startIntent;
    SharedPreferences prefs;
    String action;
    int updateType;

    action = intent.getAction();
    if ( !action.equals( ConnectivityManager.CONNECTIVITY_ACTION ) )
        return;

    /* If we don't have a connection, nothing to do */
    if ( intent.getBooleanExtra( ConnectivityManager.EXTRA_NO_CONNECTIVITY, false ) )
        return;

如果检查为真,则表示没有网络连接,因此接收器退出。下次连接发生变化时,接收器再次激活并再次运行此检查。一旦通过检查,我就会继续做我做的任何事情。

答案 1 :(得分:0)

CONNECTIVITY_CHANGE似乎适用于飞行模式的模拟器,但在我的设备上它只针对3G网络状态更改而触发。现在我不得不接受SERVICE_STATE_CHANGE,因为在飞机模式和突然失去塔架之间切换而被解雇。对于重启,我使用了BOOT_COMPLETED。