Использование ApplicationMenuItem для переопределения отправителя сообщения по умолчанию в RIM API - PullRequest
0 голосов
/ 13 августа 2010

Мне было интересно, есть ли какой-нибудь способ создать ApplicationMenuItem внутри экрана редактирования сообщения, который при выборе отправляет сообщение самому выбранным контактам в обход программы отправки по умолчанию. Я в порядке с пунктом меню и видел, как делать подобные вещи, извлекая аргумент 'context', но я не уверен, как получить тело сообщения и выбранные контакты.

1 Ответ

0 голосов
/ 29 декабря 2010

В ApplicationMenuItem контекста редактирования сообщения будет экземпляр net.rim.blackberry.api.mail.Message

Смотрите код:

package so.samples;

import net.rim.blackberry.api.invoke.Invoke;
import net.rim.blackberry.api.invoke.MessageArguments;
import net.rim.blackberry.api.mail.Address;
import net.rim.blackberry.api.mail.Message;
import net.rim.blackberry.api.mail.MessagingException;
import net.rim.blackberry.api.menuitem.ApplicationMenuItem;
import net.rim.blackberry.api.menuitem.ApplicationMenuItemRepository;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;

public class SOComposeMsgMenuApp extends UiApplication {

    public static void main(String[] args) {
        (new SOComposeMsgMenuApp()).enterEventDispatcher();
    }

    public SOComposeMsgMenuApp() {
        ApplicationMenuItem emailMenuItem = new ApplicationMenuItem(0) {
            public Object run(final Object context) {
                if (context instanceof Message) {
                    StringBuffer text = new StringBuffer("Message \nTo:\n");
                    Message msg = (Message) context;
                    Address[] to = new Address[] {};
                    try {
                        to = msg.getRecipients(Message.RecipientType.TO);
                    } catch (MessagingException e) {
                    }
                    for (int i = 0; i < to.length; i++) {
                        text.append(to[i].toString());
                        text.append("\n");
                    }
                    text.append("Body:\n");
                    text.append(msg.getBodyText());
                    Dialog.inform(text.toString());
                }
                return context;
            }

            public String toString() {
                return "My Menu Item";
            }
        };

        ApplicationMenuItemRepository amir = ApplicationMenuItemRepository
                .getInstance();
        amir.addMenuItem(ApplicationMenuItemRepository.MENUITEM_EMAIL_EDIT,
                emailMenuItem);
        Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES,
                new MessageArguments(MessageArguments.ARG_NEW, "", "testing",
                        "just trying to test menu item from compose screen"));
    }
}
...