使用BroadcastReceiver |检查何时连接移动数据Android的

时间:2013-07-05 21:49:28

标签: java android mobile broadcastreceiver

我想知道如何使用BroadcastReceiver检查何时连接移动数据。

这是我到目前为止所拥有的:

    private BroadcastReceiver MobileDataStateChangedReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        int state = intent.getIntExtra(TelephonyManager.EXTRA_STATE,
                TelephonyManager.DATA_DISCONNECTED);

        if (state == TelephonyManager.DATA_CONNECTED) {
            mobileStatus.setText("Connected");
        } else if (state == TelephonyManager.DATA_DISCONNECTED) {
            mobileStatus.setText("Disconnected");
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.status_page);

    mobileStatus = (TextView) this.findViewById(R.id.textView4);

    registerReceiver(MobileDataStateChangedReceiver, new IntentFilter(
            TelephonyManager.ACTION_PHONE_STATE_CHANGED));
}

我在这里做错了什么?

我在Wi-Fi检查中使用了相同的概念,效果很好吗? 我使用的权限:

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

1 个答案:

答案 0 :(得分:3)

TelephonyManager.ACTION_PHONE_STATE_CHANGED似乎不起作用,因为我可以阅读in TelephonyManager class description它只会通过呼叫触发,但不会触发网络或移动数据。 而不是这个,我建议你尝试设置一个监听器。它会是这样的:

1)使用TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE)

获取服务

2)使用tm.listen(myCustomPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

设置一个监听器

3)一旦你有了监听器,你就可以向你的BroadcastReceiver发送自定义意图了,如果你还想这样做的话。