TaskStackBuilder getPendingIntent方法不起作用

时间:2015-06-23 15:19:05

标签: android android-intent android-pendingintent

不确定具体问题是什么,但下面的代码在完成之前停止,并且没有进入Log.d("debug", "debug 2.4.3");

    NotificationCompat.Action actionViewContact, actionCreateActivity;

    Class createContact = ViewContactsActivity.class;
    Class viewContacts  = ViewContactsActivity.class;
    Class createActivity= CreateActivityActivity.class;

    //Activities to launch via notifications
    Intent createContactIntent  = new Intent(context, createContact);
    Intent viewContactsIntent   = new Intent(context, viewContacts);
    Intent createActivityIntent = new Intent(context, createActivity);

    //Put Extras
    createContactIntent.putExtra(ViewContactsActivity.CREATE_CONTACT_KEY, true);
    createContactIntent.putExtra(ViewContactsActivity.ANI_KEY, ani);
    createContactIntent.putExtra(MainActivity.ONSTART_KEY, MainActivity.ONSTART_CREATE_CONTACT);

    viewContactsIntent.putExtra(ViewContactsActivity.CONTACTS_KEY, (ArrayList)contacts);
    viewContactsIntent.putExtra(ViewContactsActivity.ANI_KEY, ani);
    viewContactsIntent.putExtra(MainActivity.ONSTART_KEY, MainActivity.ONSTART_VIEW_CONTACTS);

    createActivityIntent.putExtra(CreateActivityActivity.CONTACT_KEY, contacts.get(0));
    createActivityIntent.putExtra(CreateActivityActivity.ANI_KEY, contacts.get(0));
    createActivityIntent.putExtra(MainActivity.ONSTART_KEY, MainActivity.ONSTART_CREATE_ACTIVITY);

    //Add backstack, so that back button results in returning to MainActivity.class
    TaskStackBuilder sbCreateContact  = TaskStackBuilder.create(context);
    TaskStackBuilder sbViewContacts   = TaskStackBuilder.create(context);
    TaskStackBuilder sbCreateActivity = TaskStackBuilder.create(context);

    sbCreateContact.addParentStack(createContact).addNextIntent(createContactIntent);
    sbViewContacts.addParentStack(viewContacts).addNextIntent(viewContactsIntent);
    sbCreateActivity.addParentStack(createActivity).addNextIntent(createActivityIntent);

    //Create pending intents for notification actions
    int piFlag = PendingIntent.FLAG_UPDATE_CURRENT;
    Log.d("debug", "debug 2.4.1");
    PendingIntent piCreateContact = sbCreateContact.getPendingIntent(0, piFlag);
    Log.d("debug", "debug 2.4.2");
    PendingIntent piViewContacts  = sbViewContacts.getPendingIntent(0, piFlag);
    Log.d("debug", "debug 2.4.3");
    PendingIntent piCreateActivity= sbCreateActivity.getPendingIntent(0, piFlag);
    Log.d("debug", "debug 2.4.4");

我试图深入研究它,但这肯定是一个奇怪的错误。

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题。它位于viewContactsIntent.putExtra(ViewContactsActivity.CONTACTS_KEY, (ArrayList)contacts);行。如果您将不正确的捆绑和对象捆绑到intent中然后尝试调用getPendingIntent(),程序将崩溃并且无法显示错误报告/日志。我浏览了源代码,发现了几个空的catch块。

实际解决方案涉及让Contact类正确实现Parcable。