l***@outlook.com
l***@outlook.com
  • 发布:2025-02-24 17:56
  • 更新:2025-02-24 17:56
  • 阅读:12

【报Bug】调用官方提供的联系人jar获取方法, 在大量联系人存在的情况下(20K左右), 报空指针异常

分类:5+ SDK

产品分类: 其他/5+ SDK

示例代码:
plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, book => {    
      // 可通过addressbook进行通讯录操作    
      book.find(contactFields, list => {    
        const queryFinishTime = new Date().getTime();    
        const rst = dealData(list);    
        const now = new Date().getTime();    
        logger.info(`Query contact finish! count: ${rst.length}, ` +    
          `query cost: ${queryFinishTime - startTime}, ` +    
          `deal cost: ${now - queryFinishTime}ms, ` +    
          `total cost: ${now - startTime}ms`);    
        resolve(rst);    
      }, (e) => {    
        logger.error("Failed to get contacts:" + e.message);    
        resolve([]);    
      }, findOpts)    
    }, e => {    
      logger.error("Failed to get address book: " + e.message);    
      resolve([])    
    });

操作步骤:

前置条件:

  1. 调用代码示例中的获取联系人的方法
  2. 手机中联系人数量在20k左右
  3. 机型为: Samsung Galaxy S22 Ultra,Android 14

在上述条件下, 调用获取联系人, 发现非常慢; 而且出现了空指针异常

预期结果:

能够正常获取到联系人信息

实际结果:

APP崩溃, crash日志如下:

BOARD:msmnile    
BOOTLOADER:G970USQS3CTA3    
BRAND:samsung    
CPU_ABI:arm64-v8a    
CPU_ABI2:    
DEVICE:beyond0q    
DISPLAY:QP1A.190711.020.G970USQS3CTA3    
FINGERPRINT:samsung/beyond0qltesq/beyond0q:10/QP1A.190711.020/G970USQS3CTA3:user/release-keys    
HARDWARE:qcom    
HOST:21HH1G24    
ID:QP1A.190711.020    
IS_DEBUGGABLE:false    
IS_EMULATOR:false    
MANUFACTURER:samsung    
MODEL:SM-G970U    
PERMISSIONS_REVIEW_REQUIRED:true    
PRODUCT:beyond0qltesq    
RADIO:unknown    
SERIAL:unknown    
SUPPORTED_32_BIT_ABIS:[Ljava.lang.String;@c7611f8    
SUPPORTED_64_BIT_ABIS:[Ljava.lang.String;@58f66d1    
SUPPORTED_ABIS:[Ljava.lang.String;@608a536    
TAGS:release-keys    
TIME:1579307533000    
TYPE:user    
UNKNOWN:unknown    
USER:dpi    
java.lang.NullPointerException: Attempt to invoke interface method 'int android.database.Cursor.getCount()' on a null object reference    
    at io.dcloud.feature.contacts.ContactAccessorImpl.populateContactArray(ContactAccessorImpl.java:209)    
    at io.dcloud.feature.contacts.ContactAccessorImpl.search(ContactAccessorImpl.java:175)    
    at io.dcloud.feature.contacts.JsContactsMgr.execute(JsContactsMgr.java:82)    
    at io.dcloud.feature.contacts.ContactsFeatureImpl$1.run(ContactsFeatureImpl.java:29)

bug描述:

调用官方的联系人sdk查询联系人, 报空指针异常;
目标手机联系人数量比较多, 大概20k左右; 接口效率很慢, 同时在报错;

2025-02-24 17:56 负责人:无 分享
已邀请:

要回复问题请先登录注册