0

我在这个操作上遇到了一些麻烦。我有一个更新一些东西的小部件。当收到短信时,我想在收到后更新它。我写了一个 BrodCastReceiver 类,但它在到达之前更新。

 public class SmsReceiver extends BroadcastReceiver
 {
@Override
public void onReceive(Context context, Intent intent) 
{
    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras();        
    SmsMessage[] msgs = null;
    if (bundle != null)
    {
        //---retrieve the SMS message received---
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];            



        ComponentName name = new ComponentName(context, Randomnuberwidget.class);
        int [] ids = AppWidgetManager.getInstance(context).getAppWidgetIds(name);


        Intent update = new Intent();
        update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
        update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        context.sendBroadcast(update);


        }                
4

1 回答 1

0

我认为您需要添加一个 if 语句来检查意图的动作……据我所知,广播接收器能够接收任何隐式广播意图,因此只要有这样的广播意图,您的代码就会触发你现在已经设置好了...

尝试添加

if (bundle.getAction().equals("android.provider.Telephony.SMS_RECEIVED"){
//update widget
}

授予我不确定if语句,但它应该是一个小的变化......

于 2013-12-24T12:10:00.783 回答