短信接收后更新小部件

时间:2013-02-01 11:57:34

标签: android broadcastreceiver

我在这个操作上遇到了一些麻烦。 我有一个更新一些东西的小部件。当到达短信时,我想在收到后更新它。我写了一个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);


        }                

1 个答案:

答案 0 :(得分:0)

我认为你需要添加一个if语句来检查意图的动作...据我所知,广播能够获取任何隐含的广播意图,所以你的代码会在有这样的广播的时候触发意图你现在设置的方式......

尝试添加

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

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