首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Broadcastreceiver创建多个TelephonyManager实例

Broadcastreceiver创建多个TelephonyManager实例
EN

Stack Overflow用户
提问于 2011-09-05 19:13:50
回答 1查看 1.9K关注 0票数 1

这是我的BroadcastReceiver

代码语言:javascript
复制
public class PlayAudio extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {

        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        tm.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);
    }
}

这是我的自定义PhoneStateListener类

代码语言:javascript
复制
public class CustomPhoneStateListener extends PhoneStateListener {

    Context context; 
    
    public CustomPhoneStateListener(Context context) {
        super();
        this.context = context;
    }
    
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        super.onCallStateChanged(state, incomingNumber);

        switch (state) {
        case TelephonyManager.CALL_STATE_IDLE:
            Log.d("PHONEA", "IDLE");
            break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
           Log.d("PHONEA", "OFFHOOK");
            break;
        case TelephonyManager.CALL_STATE_RINGING:
            Log.d("PHONEA", "RINGING");
            Intent intent = new Intent(this.context, AudioService.class);
            context.startService(intent);
            break;
        default:
            break;
        }
    }
}

这是我的服务

代码语言:javascript
复制
public class AudioService extends Service{
    private static final String TAG = "PHONEA";
    MediaPlayer player;
    
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    
    @Override
    public void onCreate() {
        Log.d(TAG, "onCreate -> TODO");
        }
}

我的问题是,每次我在Broadcast receiver中接收数据时,我都会创建一个新的TelephonyManager实例。因此,当我查看logcat时,第一次收到“view”,第二次收到“view”,以此类推。为了只有一个实例,我应该在什么时候创建telephonylistener

你好,尼科斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-05 19:20:47

每次电话状态改变时,您的接收器上都会有呼叫(假设您正在监听PhoneState)。

你应该检查你的接收器,并且只在第一次安装TelephonyManager

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7307209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档