2

我正在开发一个应用程序,它将显示来电的服务提供者(如 Vodaphone 等)信息。我用吐司完成了它。使用以下代码

      TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
                PhoneStateListener callStateListener = new PhoneStateListener() {
                public void onCallStateChanged(int state, String incomingNumber) 
                {
                        // TODO React to incoming call.

                        if(state==TelephonyManager.CALL_STATE_RINGING)
                        {
                                Toast.makeText(getApplicationContext(),finder.find(incomingNumber), Toast.LENGTH_LONG).show();

                        }

                }
                };
                telephonyManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE);

问题是吐司在很短的时间内可见。我想让它可见,直到用户没有接到电话(即直到电话响起,一旦收到吐司应该消失)。

我应该怎么办。

我可以使用其他一些控件,例如对话框等吗?

谢谢

4

1 回答 1

1

在处理程序线程中运行 toast,如下所示:

onclick 呼叫按钮尝试以下操作:

            Button call = (Button) findViewById(R.id.call);
    call.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //call the user function to make call

        }
    });

并在您的课程中添加此方法:

        private final Runnable mRunnable = new Runnable() {

    public void run() {
            Toast.makeText(getApplicationContext(),finder.find(incomingNumber), Toast.LENGTH_LONG).show();
        mHandler.postDelayed(mRunnable, 1000);
    }

};

并在点击结束按钮或用户接听电话后取消您的吐司:

           Button end= (Button) findViewById(R.id.end);
    end.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //call the function to end the call if the other user dont receive

        }
    });

否则像你的函数一样使用:

     if(state==TelephonyManager.CALL_STATE_RINGING)
                    {
                            mHandler.postDelayed(mRunnable, 1000);

                    }
于 2012-10-09T04:56:06.093 回答