HarmonyOS 鸿蒙Next 用Picker选择联系人 如何区别“本机无联系人”和“用户有联系人但没有选择”
HarmonyOS 鸿蒙Next 用Picker选择联系人 如何区别“本机无联系人”和“用户有联系人但没有选择”
我使用Picker选取联系人信息,现在遇到这样一个问题:
使用contact.selectContacts方法选取联系人。 此方法返回值不能区分“用户取消选择”、“设备上没有联系人”两种情况。
举例,此方法签名:function selectContacts(options: ContactSelectionOptions, callback: AsyncCallback<Array<Contact>>): void;
① 当设备上没有联系人信息时,调用此方法,会马上得到一个长度为0的Array<Contact>,且不会拉起Picker对话框。
② 当设备上有联系人且拉起Picker选择框后,如果用户点击取消(或back返回),也会得到一个长度为0的Array<Contact>。
所以说,我拿到这个长度为0的Array<Contact>后,怎么判断到底是用户机器上没有联系人信息,还是用户机器上有联系人信息但放弃了选择?
或者有没有其他办法可以区分这两种场景?
注:我监听不到这个Picker对话框是否已弹出,这应该是系统级的对话框。
更多关于HarmonyOS 鸿蒙Next 用Picker选择联系人 如何区别“本机无联系人”和“用户有联系人但没有选择”的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next 用Picker选择联系人 如何区别“本机无联系人”和“用户有联系人但没有选择”的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,当使用Picker组件选择联系人时,为了区分“本机无联系人”和“用户有联系人但没有选择”的两种情况,可以采取以下策略:
-
获取联系人列表长度:在Picker组件调用选择联系人之前,先通过系统API获取当前设备的联系人列表长度。如果长度为0,则直接判断为“本机无联系人”。
-
Picker选择回调:当用户通过Picker选择联系人后,系统会触发相应的回调。在回调中,检查返回的联系人数据。如果返回的数据为空(即用户未选择任何联系人),则判断为“用户有联系人但没有选择”。
-
状态标记:在业务逻辑中,可以使用一个状态变量来标记用户是否进行了选择操作。如果Picker被打开但未选择任何联系人,状态变量保持未选择状态;如果Picker被打开且选择了联系人,则更新状态变量。
通过上述方法,可以有效区分“本机无联系人”和“用户有联系人但没有选择”的两种情况。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html