J'utilise le code suivant pour lancer une notification lorsqu'un service est démarré via AlarmManager:
nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "App";
CharSequence message = "Getting Latest Info...";
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), 0);
Notification notif = new Notification(R.drawable.icon,
"Getting Latest Info...", System.currentTimeMillis());
notif.setLatestEventInfo(this, from, message, contentIntent);
nm.notify(1, notif);
Comment définir une intention pour cet élément afin que lorsque l'utilisateur clique dessus, il lance une certaine activité?
Vous devez essentiellement mettre la classe Activity dans le cadre de votre intention dans votre PendingIntent. Votre intention est actuellement vide. Pour rediriger vers une nouvelle activité, il faut:
// This line of yours should contain the activity that you want to launch.
// You are currently just passing empty new Intent()
PendingIntent contentIntent =
PendingIntent.getActivity(this, 0, new Intent(this, MyActivity.class), 0);
Quant au commentaire de yoshi24, vous pourrez peut-être définir des extras comme celui-ci.
final Intent intent = new Intent(this, MyActivity.class);
intent.setData(data);
intent.putExtra("key", "value");
final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);
Vous devez également en être conscient avant de vous lancer dans des intentions en attente.
[~ # ~] mise à jour [~ # ~] quelque chose comme ça fonctionnera pour vous
dans votre mainfest
<activity Android:name=".MyActivity" Android:launchMode="singleTop" ... />
dans votre activité
@Override
protected void onCreate(Bundle savedInstanceState) {
processIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
processIntent(intent);
};
private void processIntent(Intent intent){
//get your extras
}
Je l'ai fait,
J'ajoute Intent.FLAG_ACTIVITY_CLEAR_TOP
à une nouvelle intention
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher,
"A new notification", System.currentTimeMillis());
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent intent = new Intent(this, NoficationDemoActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle bundle = new Bundle();
bundle.putString("buzz", "buzz");
intent.putExtras(bundle);
PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this, "This is the title",
"This is the text", activity);
notification.number += 1;
notificationManager.notify(0, notification);
Je crée comme suit:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(getIntent().getExtras()!=null){
Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
}