来电接收者没有取消祝酒词



我有一个扩展BroadcastRecieverIncomingCallReceiver

onReceive中,我想使用Toast显示一些信息,直到用户接收或拒绝呼叫。

当电话响起时,我正在使用Loops显示toast。

当用户接电话或拒绝电话时,我正在取消敬酒。

但是Toast没有被取消。

 public class IncommingCallReceiver extends BroadcastReceiver
         {
            Context context;
        static Toast toast;
            @Override
        public void onReceive(Context mContext, Intent intent)
         {
        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        TextView  tv=new TextView(mContext);
        tv.setBackgroundColor(color.background_light);
        Log.i("On Recieve"," ");
        //Toast toast=new Toast(mContext);
        if(state==null)
            return;
        if(state.equals(TelephonyManager.EXTRA_STATE_RINGING))
        {
            for(int i=0;i<7;i++)
            {
               toast=   Toast.makeText(mContext, "Ringing",Toast.LENGTH_LONG);
               toast.show();
            }

        }
         if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))
         {
            // Toast.makeText(mContext, "Recieved", Toast.LENGTH_LONG).show();
             toast.cancel();
         }
        if (state.equals(TelephonyManager.EXTRA_STATE_IDLE))
        {
            //Toast.makeText(mContext, "IDLE", Toast.LENGTH_LONG).show();
             toast.cancel();
        }



    }
 }

那么当用户收到或拒绝来电时如何取消敬酒呢?

问题是您正在连续创建几个祝酒词-当一个祝酒词完成时,其余的祝酒词将依次显示。您实际上创建了7个不同的Toast对象,但只保留了对最后一个对象的引用。

你需要做的是使用一个Toast;而不是Toast.LENGTH_LONG,使用不同的值。然后你应该可以调用cancel()

相关内容

  • 没有找到相关文章

最新更新