Relying on PR_DISPLAY_NAME property for "SMS" and "ActiveSync" named message stores
I'm trying to find out the type of message store on windows mobile devices (version 6.1 & 6.5).
More specifically I'm trying to figure out if a message store is of type "Exchange (ActiveSync)" and NOT SMS or other E-Mail account type (POP3, IMAP etc).
I'm relying on the fact that the value returned for property PR_DISPLAY_NAME
for SMS Store is "SMS"
and for Exchange Store is "ActiveSync"
.
My question is, can I rely on these values to determine the message-store type? Is there a better way to achieve this?
Following is the pseudo-code depicting my logic:
bool isActiveSyncSet = areAnySyncAccountSet(); // I use Sync configuration service
// provider to check if any ActiveSync accounts are set.
// Initialize MAPI and fetch all stores
while(we_have_stores) {
// Open Current Store
openCurrentStore(¤tStore);
string storeName = fetchStoreName(currentStore); // using GetProps method fetch PR_DISPLAY_NAME
if(storeName == "SMS" ) continue;
if(isActiveSyncSet && storeName == "ActiveSync") {
// We got the Exchange M开发者_运维问答essage Store
break;
} else {
// We have an E-Mail store but not an ActiveSync one
}
}
After a lot of offline research and testing the string returned on lots of different devices[1], I've come to the conclusion that:
One can rely on the string "ActiveSync"
being returned for PR_DISPLAY_NAME
property of a message store to identify it as an ActiveSync Exchange Message store. This message store is displayed as Outlook E-Mail
on the device UI. This is true for 6.1 and 6.5 devices at least. I did not test on Windows 7 phone, as that is not the target audience for my app[2].
Hope this helps anyone doing similar stuff.
[1] Devices that I tested were from different Vendors(HTC, LG, Samsung), so I'm pretty confident this should hold true for obscure devices running Windows Mobile 6.1 or 6.5 OS.
[2] Please feel free to add info about Windows 7 phones, if you have one or have access to one. (I'm not sure if they still have MAPI still on those phones).
I don't have much experience with Windows Mobile, but why can't you check the PR_MDB_PROVIDER property?
精彩评论