1

PIMItem からフィールド ラベルを取得するにはどうすればよいですか。次のコードは PIMList を使用したものです

String label = pimList.getAttributeLabel(
    blackBerryContact.getAttributes(Contact.TEL, i));

しかし、私は PIMItem を持っています。以下のコードには、null を返すメソッドがPIMItem.getPIMList()あります。http://www.blackberry.com/developers/docs/5.0.0api/index.htmlの API には、「getPIMList() Gets the PIMList associated with this item.」と書かれています。以下は、私が達成しようとしているサンプル コードです。

// Load the address Book and allow the user to select a contact
BlackBerryContactList contactList = (BlackBerryContactList) 
    PIM.getInstance().openPIMList(PIM.CONTACT_LIST,PIM.READ_ONLY);
PIMItem userSelectedContact = contactList.choose();
// Now get the Field labels for contact numbers for userSelectedContact 
4

2 に答える 2

1
class Scr extends MainScreen {
    Scr() {

    }

    protected void makeMenu(Menu menu, int instance) {
        super.makeMenu(menu, instance);
        menu.add(new MenuItem("add label", 1, 1){public void run() {
            try {
                BlackBerryContactList contactList = 
                    (BlackBerryContactList) PIM.getInstance().openPIMList(
                    PIM.CONTACT_LIST, PIM.READ_ONLY);
                BlackBerryContact contact = 
                    (BlackBerryContact) contactList.choose();
                    add(new LabelField(getContactInfo(contact)));
            } catch (PIMException e) {
                e.printStackTrace();
            }

        }});
    }

    String getContactInfo(BlackBerryContact c) {
        StringBuffer result = new StringBuffer();
        result.append("Name: ");
        result.append(c.getStringArray(
                BlackBerryContact.NAME, 0)[BlackBerryContact.NAME_GIVEN]);
        result.append(" ");
        result.append(c.getStringArray(
                BlackBerryContact.NAME, 0)[BlackBerryContact.NAME_FAMILY]);
        result.append("Email: ");
        result.append("\n");
        result.append(c.getString(
                BlackBerryContact.EMAIL, BlackBerryContact.ATTR_NONE));
        return result.toString();
    }
}
于 2010-05-06T06:55:49.770 に答える
1

応答してくれてありがとうマックス。NULL を返す問題は、修正したコードの問題でした。フィールドのラベルも取得できましたが、ループは連絡先がカードに持っているフィールドのみを取得します。

Contact.TEL が持っている 8 つのラベルすべてを取得しようとしています -

Int maxAllowed = contactList.maxValues(Contact.TEL); // Gives me 8 

8 つのラベルすべてがユーザーに使用されているとは限りません。たとえば、ユーザーは WORK、WORK2、HOME、HOME2、および MOBILE を持っている場合があります。その他 FAX、PAGER、および OTHER が入力されていない可能性があります。許可されているすべてのラベルを取得し、空のラベルの特定の番号を更新したいと考えています。以下を確認して更新するにはどうすればよいですか

Contact.ATTR_PAGER, Contact.ATTR_FAX, Contact.ATTR_OTHER

説明が明確でない場合、またはさらに詳細が必要な場合はお知らせください。

BlackBerryContactList contactList = (BlackBerryContactList) 
    PIM.getInstance().openPIMList(PIM.CONTACT_LIST,PIM.READ_WRITE);
PIMItem pimItem = contactList.choose();
BlackBerryContact blackBerryContact = (BlackBerryContact)pimItem;
PIMList pimList = blackBerryContact.getPIMList();
// To get Labels 
int phoneCount = blackBerryContact.countValues(BlackBerryContact.TEL);
String[] phoneNumbers = new String[phoneCount];
String[] labels = new String[phoneCount];
for (int i = 0; i > phoneCount; i++) {
    String phoneNumber = blackBerryContact.getString(Contact.TEL, i);
    String label = pimList.getAttributeLabel(
        blackBerryContact.getAttributes(Contact.TEL, i));
//Add the number and label to the array.
    phoneNumbers[i] = phoneNumber;
    labels[i] = label + ":" + phoneNumber;
}
于 2010-05-06T11:34:30.347 に答える