2011-04-18 108 views
0

我想创建一个程序,在点击按钮30秒后调用一个活动。我有用户pendingIntentBroadcastReciever为这个pupose,但没有发生。我的代码是:Android意图广播

package com.example.wrox; 

import java.util.Calendar; 

import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class AlarmManagerDemo extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final Calendar cal= Calendar.getInstance(); 
     cal.add(Calendar.SECOND, 30); 
     Button btn= (Button) findViewById(R.id.btn); 
     Intent intent= new Intent(this,AlarmManagerDemo.class); 
     intent.putExtra("alarm_message", "Maza aa gaya"); 
     final PendingIntent sender= PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     btn.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast message= Toast.makeText(getApplicationContext(), "This is Starting", Toast.LENGTH_LONG); 
       message.show(); 
       AlarmManager am= (AlarmManager) getSystemService(ALARM_SERVICE); 
       am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 

      } 
     }); 

    } 
} 

此活动在按钮点击30秒后调用Broadcase接收器。代码是:

package com.example.wrox; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Toast; 

public class AlarmDemo extends BroadcastReceiver{ 
@Override 
public void onReceive(Context ctx, Intent intent) { 
    try{ 
    Bundle bundle= intent.getExtras(); 
    String msg= bundle.getString("alarm_message"); 
    Intent newIntent= new Intent(ctx, NewActivity.class); 
    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    ctx.startActivity(newIntent); 
    } 
    catch(Exception e) 
    { 
     Toast message= Toast.makeText(ctx, "Error occured", Toast.LENGTH_LONG); 
     message.show(); 
    } 
} 
} 

BroadcastReciever呼吁在我所用Toast显示一些静态内容的活动。但按钮点击后没有任何事情发生。请建议我,我在哪里犯错? 没有错误和异常生成...

回答

1

这是一个很好的资源updating the UI from a Timer

刚进入一个HandlerRunnable当您按下30秒的按钮,然后睡在了BroadCastReciever

0

叫你定义AndroidManifest.xmlBroadcastReceiver