3

以下のコード (特にpushMessageメソッド) を使用して、ユーザーに通知を表示しています。

public final class MyApplicationMessageFolder 
{
    public static final long MyFolderId = 0x1256789012F10123L;

    private ApplicationMessageFolder folder_;
    private ApplicationIndicator indicator_;
    private MyReadableListImpl collection_;

    public void pushMessage(String subject, String message)
    {
        try 
        {
            if (collection_ == null)
            {
                collection_ = new MyReadableListImpl();
            }
            if (indicator_ == null)
            {
                registerFolderAndIndicator();
            }

            ApplicationMessage am = new MyApplicationMessage(message, subject);
            collection_.addMessage(am);
            folder_.fireElementAdded(am);

            // Update indicator
            int size = collection_.size();
            indicator_.setValue(size);
            indicator_.setVisible(size > 0);
        } 
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }

    private void registerFolderAndIndicator()
    {
        // registration application folder and indicator
        ApplicationMessageFolderRegistry amfr = 
                ApplicationMessageFolderRegistry.getInstance();
        folder_ = amfr.getApplicationFolder(MyFolderId );

        if (folder_ == null)
        {
            folder_ = 
                    amfr.registerFolder(MyFolderId , "My Folder", collection_, true);
            ApplicationIcon icon = 
                    new ApplicationIcon(image_ = EncodedImage.getEncodedImageResource("my_icon.png"), true);
            int status = ApplicationMessage.Status.INCOMING | ApplicationMessage.Status.UNOPENED;

            amfr.registerMessageIcon(0, status, icon);
            folder_.setSearchProperties(new ApplicationMessageSearchProperties(true));
            folder_.addListener(
                    new ApplicationMessageFolderListener() {

                        public void actionPerformed(int action, ApplicationMessage[] messages,
                                ApplicationMessageFolder folder) {
                            if (action == ApplicationMessageFolderListener.MESSAGE_DELETED) {
                                for (int i = 0; i < messages.length; i++)
                                    collection_.removeMessage(messages[i]);

                                indicator_.setValue(collection_.size());
                                indicator_.setVisible(collection_.size() > 0);
                            }
                        }
                    },
                    ApplicationMessageFolderListener.MESSAGE_DELETED | 
                            ApplicationMessageFolderListener.MESSAGE_MARKED_OPENED | 
                            ApplicationMessageFolderListener.MESSAGE_MARKED_UNOPENED, 
                    ApplicationDescriptor.currentApplicationDescriptor());

            ApplicationMenuItem[] menu = new ApplicationMenuItem[] {

                    new ApplicationMenuItem(0) {

                        public String toString() {
                            return "Go to application";
                        }

                        public Object run(Object context) {
                            return null;
                        }
                    }
            };

            amfr.registerMessageMenuItems(0, status, menu, 
                    ApplicationDescriptor.currentApplicationDescriptor());
            amfr.setBulkMarkOperationsSupport(0, status, true, false);

            ApplicationIndicatorRegistry air = ApplicationIndicatorRegistry.getInstance();
            air.register(new ApplicationIcon(EncodedImage
                    .getEncodedImageResource("bar_icon_25.png")),
                    false, false);

            indicator_ = air.getApplicationIndicator();
        }
    }

    class MyApplicationMessage implements ApplicationMessage 
    {
        private String message_;
        private String subject_;
        private long timestamp_;

        public MyApplicationMessage(String message, String subject) {
            message_ = message;
            subject_ = subject;
            timestamp_ = new Date().getTime();
        }

        public String getContact() {
            return "HelloWorld";
        }

        public Object getCookie(int cookieId) {
            return null;
        }

        public Object getPreviewPicture() {
            return image_;
        }

        public String getPreviewText() {
            return message_;
        }

        public int getStatus() {
            return ApplicationMessage.Status.UNOPENED;
        }

        public String getSubject() {
            return subject_;
        }

        public long getTimestamp() {
            return timestamp_;
        }

        public int getType() {
            return 0x01;
        }
    }

    private class MyReadableListImpl implements ReadableList {
        private final Vector messages;


        MyReadableListImpl() {
            messages = new Vector();
        }

        public Object getAt(final int index) {
            return messages.elementAt(index);
        }

        public int getAt(final int index, final int count,
                final Object[] elements, final int destIndex) {
            return 0;
        }

        public int getIndex(final Object element) {
            return messages.indexOf(element);
        }

        public int size() {
            return messages.size();
        }

        void addMessage(final ApplicationMessage message) {
            messages.addElement(message);
        }

        void removeMessage(final ApplicationMessage message) {
            messages.removeElement(message);
        }
    }
}

メッセージ フォルダにはメッセージが表示されますが、通知バーにはまだ表示されません

ここに画像の説明を入力

空の通知バーが表示される理由を誰か説明できますか?

ありがとう

4

1 に答える 1

1

通知ドロップダウン リストにメッセージを表示するには、代わりに使用する必要があります。

ApplicationFolderIntegrationConfig config = new 
        ApplicationFolderIntegrationConfig(true, true, 
        ApplicationDescriptor.currentApplicationDescriptor());
folder_ = amfr.registerFolder(MyFolderId , "My Folder", collection_, config);

代わりは:

folder_ = amfr.registerFolder(MyFolderId , "My Folder", collection_, true);
于 2013-02-19T18:00:50.327 に答える