未接来电后执行活动

时间:2014-03-10 13:53:46

标签: android

我是Android开发的新手,我想构建一个App,它会在收到来自特定号码的未接来电后自动发送消息。 我很清楚Android中的消息,但不知道如何在未接来电后执行活动 任何人都可以请求帮助(如果可能的话)并建议在哪里学习关于An​​droid的新东西作为初学者。提前感谢

2 个答案:

答案 0 :(得分:1)

你需要创建一个听取呼叫事件的服务,然后让你的应用程序采取相应的行动,看看http://www.codeproject.com/Articles/548416/Detecting-incoming-and-outgoing-phone-calls-on-And

答案 1 :(得分:0)

我没有找到任何特定的未接来电状态,而是使用了三个状态,即CALL_STATE_RINGINGCALL_STATE_IDLECALL_STATE_OFFHOOK,如下所示:

    package com.example.misscall;

    import android.os.Bundle;
    import android.telephony.PhoneStateListener;
    import android.telephony.TelephonyManager;
    import android.widget.Toast;
    import android.app.Activity;
    import android.content.Context;

    public class MainActivity extends Activity {
        int checkIt = 0;
        TelephonyManager tm;
        CallStateListener callStateListener = new CallStateListener();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tm = (TelephonyManager) getBaseContext().getSystemService(
                    Context.TELEPHONY_SERVICE);
            tm.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
        }

        private class CallStateListener extends PhoneStateListener {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                switch (state) {
                case TelephonyManager.CALL_STATE_RINGING:
                    // called when someone is ringing to this phone

                    Toast.makeText(getBaseContext(), "Incoming: " + incomingNumber,
                            Toast.LENGTH_LONG).show();
                    checkIt = 1 ;
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK :
                    checkIt = 0;
                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    if(checkIt == 1)
                    //send message here
                    break;
                }

        }
    }
}

由于未接来电将是状态首次从 IDLE 更改为 INCOMING_CALL ,但是当它被选中时,状态会变回0(默认值)。
但仍然存在问题,当用户自己取消呼叫时,它将被计为未接来电。希望我找到一条出路。