美文网首页Weex
weex☞获取通讯录

weex☞获取通讯录

作者: 小学生的博客 | 来源:发表于2018-12-03 14:31 被阅读18次

获取通讯录、扫码、打开相册、拍照等操作,都是一个套路,就是创建module,原生实现这些方法,前端调用是时候返回最终的结果。
下面是如何获取通信录代码,不知道有没有更好的策略。

public class pickPhone extends WXModule {
    String stringBuffer = "";
    protected JSCallback callback;

    @JSMethod(uiThread = false)
    public void open(JSCallback callback) {
        ((Activity) (mWXSDKInstance.getContext())).startActivityForResult(new Intent(Intent.ACTION_PICK,
                ContactsContract.Contacts.CONTENT_URI), 0);

        this.callback = callback;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {

            ContentResolver reContentResolverol = mWXSDKInstance.getContext()
                    .getContentResolver();
            if (data == null) {
                return;
            }
            Uri contactData = data.getData();
            @SuppressWarnings("deprecation")
            Cursor cursor = ((Activity) (mWXSDKInstance.getContext())).managedQuery(contactData, null, null,
                    null, null);
            if (cursor == null) {
                return;
            }
            cursor.moveToFirst();
            if (cursor.getCount() == 0) {
                Toast.makeText(mWXSDKInstance.getContext(), "您拒绝了访问通讯录,请设置访问权限!", Toast.LENGTH_SHORT).show();
                return;
            }
            String contactId = cursor.getString(cursor
                    .getColumnIndex(ContactsContract.Contacts._ID));
            Cursor phone = reContentResolverol.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
                            + contactId, null, null);
            ArrayList<String> contactList = new ArrayList<String>();
            while (phone.moveToNext()) {
                stringBuffer = phone
                        .getString(phone
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                stringBuffer = stringBuffer.replace("+86", "");
                stringBuffer = stringBuffer.replace(" ", "");
                stringBuffer = stringBuffer.replace("-", "");
                stringBuffer = stringBuffer.replace("——", "");
                contactList.add(stringBuffer);
            }
            if (null == contactList || 0 == contactList.size()) {
                Toast.makeText(mWXSDKInstance.getContext(), "该联系人没有可用手机号码!",
                        Toast.LENGTH_SHORT).show();
                return;
            }
            if (contactList.size() > 1) {
                final String[] contactArr = new String[contactList.size()];
                for (int i = 0; i < contactArr.length; i++) {
                    contactArr[i] = contactList.get(i);
                }
                new AlertDialog.Builder(mWXSDKInstance.getContext())
                        .setTitle("请选择充值号码")
                        .setSingleChoiceItems(contactArr, 0,
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog,
                                                        int which) {
                                        // TODO Auto-generated
                                        // method stub
                                        stringBuffer = contactArr[which];
                                        dialog.dismiss();
                                    }
                                }).show();
            } else {
                stringBuffer = contactList.get(0);
            }

            Log.d("my-tag", stringBuffer);

            Map<String, Object> params = new HashMap<>();
            params.put("data", stringBuffer);
            callback.invoke(stringBuffer);
        }
    }
}

配置相应的权限,在WXApplication中加入

   WXSDKEngine.registerModule("pickPhone", pickPhone.class);

然后就是前端调用

const pickPhone = weex.requireModule('pickPhone')
...         //在方法中直接使用就行了
            pickPhone .open(res => {
                   ...
                })

相关文章

  • weex☞获取通讯录

    获取通讯录、扫码、打开相册、拍照等操作,都是一个套路,就是创建module,原生实现这些方法,前端调用是时候返回最...

  • IOS 获取手机通讯录

    //获取通讯录 -(void)GetUserAddressBook { //获取通讯录权限 ABAddressBo...

  • iOS获取通讯录信息

    获取通讯录的信息有两种 1.在不弹出通讯录控制器的情况下获取所有的通讯录信息 2.通过弹窗获取通讯录的某个用户信息...

  • 获取通讯录联系人信息(Swift)

    一.通讯录开发 1.获取用户手机通讯录中的联系人 2.通过获取通讯录信息,可以在应用中添加好友 二.如何获取用户的...

  • 获取通讯录--AddressBookUI的使用

    一. 通讯录的简介 通讯录获取主要用于一些即时通讯App, 如微信, 可以获取你的手机通讯录, 查看哪些好友注册了...

  • iOS9.0之前和之后获取通讯录的方法

    1. iOS 9.0之前获取通讯录的方法 打印结果: 2. iOS 9.0 及 iOS 9.0之后获取通讯录的方法...

  • iOS通讯录开发

    前言 记录下在应用内获取通讯录的相关知识点,涉及到通讯录权限配置,通讯录数据的获取以及数据按首字母排序。 系统通讯...

  • 通讯录处理

    /** 获取通讯录 **/-(void)getAddressBookList{NSMutableArray *ar...

  • Android通讯录(6.0)操作简介

    添加权限 Android6.0获取手机通讯录动态权限 获取权限回调 读取手机联系人通讯录 共享数据监听 注册监听通...

  • ios weex 获取宽高错乱问题

    weex 底层源码中获取宽高是用 [UIScreen mainScreen].bounds.size [UIScr...

网友评论

    本文标题:weex☞获取通讯录

    本文链接:https://www.haomeiwen.com/subject/ltyycqtx.html