【JAVA UI】 HarmonyOS 怎么添加联系人

​参考资料

HarmonyOS技术训练营第三期#分布式通讯簿

代码实现

权限申请

在config.json文件添加ohos.permission.READ_CONTACTS和ohos.permission.WRITE_CONTACTS,并且在mainAbility文件动态申请权限,代码如下

 "reqPermissions": [
      {"name": "ohos.permission.READ_CONTACTS"},
      {
        "name": "ohos.permission.WRITE_CONTACTS"
      }
    ],

mainAbility

package com.example.myapplication;

import com.example.myapplication.slice.MainAbilitySlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.bundle.IBundleManager;
import ohos.security.SystemPermission;

import java.util.ArrayList;
import java.util.List;

public class MainAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        requestPermissions();
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());
    }

    private void requestPermissions() {
        String[] permissions = {
                SystemPermission.READ_CONTACTS, SystemPermission.WRITE_CONTACTS
        };
        List<String> permissionsToProcess = new ArrayList<>();
        for (String permission : permissions) {
            if (verifySelfPermission(permission) != IBundleManager.PERMISSION_GRANTED
                    && canRequestPermission(permission)) {
                permissionsToProcess.add(permission);
            }
        }
        requestPermissionsFromUser(permissionsToProcess.toArray(new String[0]), 0);
    }
}
代码实现

在MainAbilitySlice代码onstart方法中实现添加联系人,代码如下

package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.sysappcomponents.contact.ContactsHelper;
import ohos.sysappcomponents.contact.entity.Contact;
import ohos.sysappcomponents.contact.entity.Name;
import ohos.sysappcomponents.contact.entity.PhoneNumber;

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        //初始化 ContactsHelper 对象
        ContactsHelper contactsHelper = new ContactsHelper(getContext());
        //todo 初始化 Contact
        Contact contact = new Contact();
        //todo 初始化 Name
        Name name = new Name();
        //todo 设置姓名
        name.setFullName("小明");
        //todo 初始化 PhoneNumber
        PhoneNumber phoneNumber=new PhoneNumber(getContext(),"13888888888",0);
        //todo 添加电话对象
        contact.addPhoneNumber(phoneNumber);
        //todo 添加姓名对象
        contact.setName(name);
        //todo 添加contact对象
        contactsHelper.addContact(contact);

    }

}

运行效果

cke_2836.png

【FAQ】在模拟上运行报错

参考权限开发指导需要开发者申请对应证书后才能被使用的特殊权限。在申请 WRITE_CONTACTS、READ_CONTACTS这两个权限时候

posted @ 2022-08-24 09:18  华为开发者论坛  阅读(94)  评论(0)    收藏  举报