0

この操作で困っています。いくつかのものを更新するウィジェットがあります。SMS が届いたら、受信後に更新したい。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 に答える