2013-02-01 112 views
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); 


     }     

回答

0

我認爲你需要添加一個if語句檢查意圖的行動......據我可以告訴broadcastreciever能夠拿起任何隱含的廣播意圖,所以你的代碼會火隨時出現就是這樣一個廣播的意圖,你有它設置現在我不能確定的if語句,但它應該是對一個小變化的方式......

嘗試添加

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

補助。 ..