我在这个操作上遇到了一些麻烦。 我有一个更新一些东西的小部件。当到达短信时,我想在收到后更新它。我写了一个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);
}
答案 0 :(得分:0)
我认为你需要添加一个if语句来检查意图的动作...据我所知,广播能够获取任何隐含的广播意图,所以你的代码会在有这样的广播的时候触发意图你现在设置的方式......
尝试添加
if (bundle.getAction().equals("android.provider.Telephony.SMS_RECEIVED"){
//update widget
}
授予我不确定if语句,但它应该是一个小的变化......