黑莓:如何从原生应用程序自定义菜单项传递相关数据启动第三方应用程序?

时间:2010-08-27 10:46:24

标签: blackberry

我正在尝试在内置联系人应用程序中创建自己的菜单项。点击该菜单项时,必须使用所选的联系方式启动我的应用程序。

我可以将自己的菜单项添加到本机联系人应用菜单中。它在BB 4.7模拟器上显示。

amir.addMenuItem(ApplicationMenuItemRepository.MENUITEM_ADDRESSBOOK_LIST, contactsDemoMenuItem);

我正在尝试使用所选联系人的详细信息启动我的应用程序屏幕。

我按照代码执行,

 public class SampleMenuItem extends ApplicationMenuItem
{
    Contact mContact;
    SampleMenuItem()
    {
        super(20);
    }
     public Object run(Object context)
    {

        if (context instanceof Contact) 
         {
                 mContact = (Contact) context;

           pushScreen(new MyAppNextScreen(<Here i need to pass a string which should have contact name and mobile number appended>));

        }

        return context;
    }

但是当点击本机联系人的菜单项时,它就会成功启动到我的应用程序。这里也没有问题。 但我想知道如何将选定的联系人详细信息从Native联系人提取到我的应用程序。我使用“context instanceof Contact”。我必须通过记录,只选择联系人姓名和手机号码。我怎样才能实现它?

1 个答案:

答案 0 :(得分:0)

我终于解决了所有问题。

 public Object run(Object context)
    {            
        if (context instanceof Contact) {

            mContact = (Contact) context;

            String data;
           StringBuffer strOut = new StringBuffer();

           String[] dataArray = mContact.getStringArray(Contact.NAME, 0);

           if((data = dataArray[Contact.NAME_GIVEN]) != null)
            {
                strOut.append(data);

            }
           int n = mContact.countValues(Contact.TEL);
           for(int i=0; i<n; i++)
            {
                data = mContact.getString(Contact.TEL, i);
                strOut.append(" - ");                   

                strOut.append(data);
                if(Contact.ATTR_WORK == mContact.getAttributes(Contact.TEL, i))
                    strOut.append("(Work Phone)");
                else if(Contact.ATTR_MOBILE == mContact.getAttributes(Contact.TEL, i))
                    strOut.append("(Mobile Phone)");
                else if(Contact.ATTR_HOME == mContact.getAttributes(Contact.TEL, i))
                    strOut.append("(Home Phone)");
                else if(Contact.ATTR_FAX == mContact.getAttributes(Contact.TEL, i))
                    strOut.append("(Fax NO)");
                else if(Contact.ATTR_PAGER == mContact.getAttributes(Contact.TEL, i))
                    strOut.append("(Page NO)");
            }

            catch(Exception e)
            {
                System.out.println("No Email Address");
            }

            UiApplication.getUiApplication().pushScreen(new MyAppNextScreen(strOut.toString()));

        }