2

着信のサービス提供者(ボーダフォンなど)の情報を表示するアプリを開発しています。トーストを使って完成させました。次のコードで

      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

次のようにハンドラスレッドでトーストを実行します。

呼び出しボタンの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 に答える