2011-04-18 3 views
0

Je veux créer un programme dans lequel une activité est appelée après 30 secondes de clic. J'ai l'utilisateur pendingIntent et BroadcastReciever pour cela, mais rien ne se passe. Mon code est:Android Intention diffusion

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); 

      } 
     }); 

    } 
} 

Cette activité appelle un réceptionnaire Broadcase après 30 secondes de clic. Code est:

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(); 
    } 
} 
} 

Cette BroadcastReciever appelle une activité dans laquelle j'ai utilisé Toast pour afficher un contenu statique. Mais rien ne se passe après le clic du bouton. S'il vous plaît me suggérer, où je me trompe? Aucune erreur et exception ne sont générées ...

Répondre

1

Ceci est une bonne ressource sur updating the UI from a Timer.

Il suffit d'aller dans un Handler ou un Runnable lorsque vous appuyez sur le bouton et le sommeil pendant 30 secondes, puis font appel à la BroadCastReciever

0

Avez-vous défini l'BroadcastReceiver dans AndroidManifest.xml?