我正试图找出Windows移动设备上的消息存储类型(版本6.1和6.5)。
更具体地说,我试图找出邮件存储是否为“Exchange(ActiveSync)”类型而不是SMS或其他电子邮件帐户类型(POP3,IMAP等)。
我依赖于以下事实:SMS Store的属性PR_DISPLAY_NAME
返回的值为"SMS"
,而Exchange Store的值为"ActiveSync"
。
我的问题是,我可以依赖这些值来确定邮件存储类型吗?有没有更好的方法来实现这一目标?
以下是描述我逻辑的伪代码:
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 Message Store
break;
} else {
// We have an E-Mail store but not an ActiveSync one
}
}
答案 0 :(得分:0)
经过大量离线研究和测试后,许多不同设备返回的字符串[1],我得出的结论是:
可以依赖对邮件存储的"ActiveSync"
属性返回的字符串PR_DISPLAY_NAME
,以将其标识为ActiveSync Exchange邮件存储。此消息存储在设备UI上显示为Outlook E-Mail
。这至少适用于 6.1 和 6.5 设备。我没有在 Windows 7手机上进行测试,因为这不是我应用的目标受众[2]。
希望这有助于任何人做类似的事情。
[1] 我测试的设备来自不同的供应商(HTC,LG,三星),因此我非常有信心这应该适用于运行Windows Mobile 6.1或6.5操作系统的模糊设备。
[2] 请随时添加有关Windows 7手机的信息,如果您有一个或有权访问一个。 (我不确定他们手机上是否还有MAPI)。
答案 1 :(得分:0)
我对Windows Mobile没有太多经验,但为什么不能检查PR_MDB_PROVIDER属性?