我的IncomingCallReceiver
扩展了BroadcastReciever
。
在onReceive
内部我希望使用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();
}
}
}
那么当用户收到或拒绝来电时如何取消祝酒?
答案 0 :(得分:1)
问题在于你连续创造了几个祝酒词 - 当一个吐司完成时,其余的依次显示。你实际上是在创建7个不同的Toast对象,但只保留对最后一个对象的引用。
你需要做的是使用一个Toast;而不是Toast.LENGTH_LONG
,使用不同的值。然后你应该可以致电cancel()
。