Android Mehrere Benachrichtigungen und mit mehreren intents

Habe ich eine Recht einfache app, die die Eingabe eines Benutzers und dann setzt es als eine Benachrichtigung. Der Benutzer kann beliebig viele Benachrichtigungen, wie er/Sie mag. Ich möchten, dass der Benutzer auf die Benachrichtigung klicken und bekommen eine neue Aktivität namens ResultActivity. ResultActivity wiederum liest die putExtras aus den Meldungen Absicht und zeigt Sie dem Benutzer. Der folgende code ermöglicht es mir zu tun fast alles, was ich wollte, außer jederzeit eine Benachrichtigung gedrückt wird, erhalte ich die putExtra von der zuletzt erstellte Benachrichtigung.

Intent notificationIntent = new Intent(ctx, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx, i,notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT);

NotificationManager nm = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

Resources res = ctx.getResources();
NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx);
builder.setContentIntent(contentIntent)
    .setSmallIcon(R.drawable.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(res,R.drawable.ic_launcher))
    .setTicker("Remember to " + text.getText())
    .setWhen(System.currentTimeMillis()).setAutoCancel(true)
    .setContentTitle(text.getText());

//Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, ResultActivity.class);
String pass = text.getText().toString();

resultIntent.putExtra("title", pass);
resultIntent.putExtra("uid", i);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
//Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(ResultActivity.class);
//Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);

new Uri.Builder().scheme("data").appendQueryParameter("text", "my text").build();
builder.setContentIntent(resultPendingIntent);

Notification n = builder.build();
n.flags = Notification.FLAG_NO_CLEAR;
nm.notify(i++, n);
text.setText(null);
  1. Öffnen Sie die Anwendung

  2. Geben Sie in "One"

  3. Drücken Sie ok

  4. Benachrichtigung

  5. Öffnen Sie die Anwendung

  6. Geben Sie in "Zwei"

  7. Drücken Sie ok

  8. Benachrichtigung

Nun haben Sie zwei Benachrichtigungen. Derjenige, der sagt "Man" und eine, die sagt "Zwei". Wenn Sie klicken Sie auf die Benachrichtigung "Zwei" gelangen Sie zu einem Bildschirm, der sagt "Zwei". Perfekt!

Wenn Sie klicken Sie auf die Benachrichtigung "Eine" gelangen Sie zu einem Bildschirm, der sagt "Zwei". KAPUTT!

ResultActivity.java

public class ResultActivity extends Activity {
    String title = null;
    TextView text;

    int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        text = (TextView) findViewById(R.id.textView1);



        title = getIntent().getStringExtra("title");
         i = getIntent().getIntExtra("uid", 0);


        text.setText(title);

    }
  • Bitte tun Sie nicht repost Fragen, auch wenn du den alten entfernen(s).
InformationsquelleAutor EGHDK | 2012-10-19
Schreibe einen Kommentar