无法使PhoneStateListener工作。我见过这些例子

时间:2012-02-23 16:51:40

标签: android

我需要一个应用程序范围的侦听器来确定服务状态何时在手机上发生变化。我已经浏览过每一个在线的例子,复制了一行一行,修改了清单,我无法得到任何工作。

电话状态监听器是否必须处于活动状态?我可以有一些普通的老班来听电话状态改变吗?

这非常令人沮丧。

在我的班上,我有......

     private class ServiceReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(android.content.Context context, Intent intent) {

            Log.i(TAG, "onReceive");

            MyPhoneStateListener qpsl = new myPhoneStateListener();
            TelephonyManager tm = (TelephonyManager)context.getSystemService(android.content.Context.TELEPHONY_SERVICE);
            tm.listen(qpsl, PhoneStateListener.LISTEN_SERVICE_STATE);
        }
    }

    private class MyPhoneStateListener extends PhoneStateListener{

public void onServiceStateStateChanged(ServiceState serviceState){
    Log.i(TAG, "ServiceState = " + serviceState.getState();
}

我知道我需要修改广播接收器和phonestate的清单。哪里?我想要这个应用程序。

这是我拥有的所有代码,有人可以告诉我我缺少什么,以便我可以听取服务状态的变化吗?

1 个答案:

答案 0 :(得分:0)

我怀疑没有对你有用的原因是广播从未收到过。您在清单中注册了什么广播?请记住,手机状态变化不是“传统”广播。您需要注册此PhoneStateListener对象。

在任何情况下,您都不需要BroadcastReceiver。只需使用Service即可。只需将代码从onReceive()上方移到onStartCommand()的{​​{1}},您就应该好了。

我在一个简单的“可怜的信号历史”应用程序中实现了类似的东西,它工作正常。该项目已上传here