选择联系人_autojs选择微信联系人 - CSDN
精华内容
参与话题
  • 钉钉、微信选择联系人,支持a-z选择和搜索框,钉钉、微信选择联系人,支持a-z选择和搜索框
  • Android选择联系人并返回对应号码

    千次阅读 2018-02-23 11:32:05
    Android选择联系人并返回对应号码

    效果图

    20180223112640340

    关键代码

    activity_pick_contact

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.a00xiaoyugmailcom.myapplication.ConnectionSelectActivity"
        android:orientation="vertical"
        android:padding="20dp">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="收货人"/>
    
            <EditText
                android:id="@+id/et_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="手机号码"/>
    
            <EditText
                android:id="@+id/et_phone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
    
        </LinearLayout>
    
        <Button
            android:id="@+id/btn_select"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/shape_button_normal"
            android:text="选联系人"
            android:textColor="#ff0000"
            android:layout_marginTop="10dp"/>
    
    </LinearLayout>
    

    AndroidManifest

    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    MainActivity

    import android.Manifest;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Build;
    import android.provider.ContactsContract;
    import android.support.annotation.NonNull;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class ConnectionSelectActivity extends AppCompatActivity implements View.OnClickListener {
        private EditText et_username;
        private EditText et_phone;
        private Button btn_select;
        private static final int PICK_CONTACT = 1;
        private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 2;
        private Intent mIntent;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_pick_contact);
    
            et_username = findViewById(R.id.et_username);
            et_phone = findViewById(R.id.et_phone);
            btn_select = findViewById(R.id.btn_select);
    
            btn_select.setOnClickListener(this);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case PICK_CONTACT:
                    mIntent = data;
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
                        //申请授权,第一个参数为要申请用户授权的权限;第二个参数为requestCode 必须大于等于0,主要用于回调的时候检测,匹配特定的onRequestPermissionsResult。
                        //可以从方法名requestPermissions以及第二个参数看出,是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。
                        requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS);
    
                    }else{
                        //如果该版本低于6.0,或者该权限已被授予,它则可以继续读取联系人。
                        getContacts(data);
                    }
                    break;
                default:
                    super.onActivityResult(requestCode, resultCode, data);
                    break;
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // 用户成功授予权限
                    getContacts(mIntent);
                } else {
                    Toast.makeText(this, "你拒绝了此应用对读取联系人权限的申请!", Toast.LENGTH_SHORT).show();
                }
            }
        }
    
        @Override
        public void onClick(View view) {
            selectConnection();
        }
    
        private void selectConnection() {
            Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(intent, PICK_CONTACT);
        }
    
        private void getContacts(Intent data) {
            if (data == null) {
                return;
            }
    
            Uri contactData = data.getData();
            if (contactData == null) {
                return;
            }
            String name = "";
            String phoneNumber = "";
    
            Uri contactUri = data.getData();
            Cursor cursor = getContentResolver().query(contactUri, null, null, null, null);
            if (cursor.moveToFirst()) {
                name = cursor
                        .getString(cursor
                                .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                String hasPhone = cursor
                        .getString(cursor
                                .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
                String id = cursor.getString(cursor
                        .getColumnIndex(ContactsContract.Contacts._ID));
                if (hasPhone.equalsIgnoreCase("1")) {
                    hasPhone = "true";
                } else {
                    hasPhone = "false";
                }
                if (Boolean.parseBoolean(hasPhone)) {
                    Cursor phones = getContentResolver()
                            .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                    null,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                            + " = " + id, null, null);
                    while (phones.moveToNext()) {
                        phoneNumber = phones
                                .getString(phones
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    }
                    phones.close();
                }
                cursor.close();
    
                et_username.setText(name);
                et_phone.setText(phoneNumber);
            }
        }
    }
    
    展开全文
  • 先是跳转过去 //点击选择通讯录 AlertDialog.Builder builder = new AlertDialog.Builder(act); builder.setTitle("提示:").setMessage("确定从通讯录选择联系人?").setCancelable(true)

    先是跳转过去

    //点击选择通讯录
                    AlertDialog.Builder builder = new AlertDialog.Builder(act);
                    builder.setTitle("提示:").setMessage("确定从通讯录选择联系人?").setCancelable(true)
                            .setPositiveButton("是", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                    startActivityForResult(new Intent(
                                            Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), 0);
                                }
                            }).setNegativeButton("否", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            dialogInterface.dismiss();
                        }
                    }).show();
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    //———————————————————- 
    获取返回的数据,重写onActivityResult方法

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == Activity.RESULT_OK) {
                ContentResolver reContentResolverol = getContentResolver();
                Uri contactData = data.getData();
                @SuppressWarnings("deprecation")
                Cursor cursor = managedQuery(contactData, null, null, null, null);
                cursor.moveToFirst();
                String username = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                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);
                while (phone.moveToNext()) {
                    String usernumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    KLog.e(usernumber+" ("+username+")");
                    cInviteeUsername.setText(username);
                    cInviteeTel.setText(usernumber);
                }
    
            }
        }
    展开全文
  • 在开发中经常要使用联系人电话号码,需要跳转至联系人界面,选择后返回电话号码.为了解决该问题,通过对系统上层源代码的查看,实现了跳转获取.步骤如下: 1,源代码查看 找到上层源代码中系统联系人app- Contacts ,打开...

    在开发中经常要使用联系人电话号码,需要跳转至联系人界面,选择后返回电话号码.为了解决该问题,通过对系统上层源代码的查看,实现了跳转获取.步骤如下:

    1,源代码查看

    找到上层源代码中系统联系人app- Contacts ,打开清单文件找我们需要的跳转的界面,其中有很多的意图过滤器,由于需要获取电话号码,联系人姓名等数据,经过挑选,选择以下过滤器来构建意图.

    <activity android:name="ContactsListActivity"
    <span style="white-space:pre">	</span>android:label="@string/contactsList"
    <span style="white-space:pre">	</span>android:clearTaskOnLaunch="true">
    <span style="white-space:pre">	</span><intent-filter>
    <span style="white-space:pre">		</span><action android:name="android.intent.action.PICK" />
    <span style="white-space:pre">		</span><category android:name="android.intent.category.DEFAULT" />
    <span style="white-space:pre">		</span><data android:mimeType="vnd.android.cursor.dir/contact" />
    <span style="white-space:pre">		</span><data android:mimeType="vnd.android.cursor.dir/person" />
    <span style="white-space:pre">		</span><data android:mimeType="vnd.android.cursor.dir/phone_v2" />
    <span style="white-space:pre">		</span><data android:mimeType="vnd.android.cursor.dir/phone" />
    <span style="white-space:pre">		</span><data android:mimeType="vnd.android.cursor.dir/postal-address_v2" />
    <span style="white-space:pre">		</span><data android:mimeType="vnd.android.cursor.dir/postal-address" />
    <span style="white-space:pre">	</span></intent-filter>
    </activity>

    2,代码实现

    按照查询到的意图过滤器的过滤条件进行跳转意图的构建.

    //跳转到系统的界面,选择联系人,然后返回
    /*<intent-filter>
    	<action android:name="android.intent.action.PICK" />
    	<category android:name="android.intent.category.DEFAULT" />
    	<data android:mimeType="vnd.android.cursor.dir/contact" />
    	<data android:mimeType="vnd.android.cursor.dir/person" />
    	<data android:mimeType="vnd.android.cursor.dir/phone_v2" />
    	<data android:mimeType="vnd.android.cursor.dir/phone" />
    	<data android:mimeType="vnd.android.cursor.dir/postal-address_v2" />
    	<data android:mimeType="vnd.android.cursor.dir/postal-address" />
    </intent-filter>*/
    
    Intent intent = new Intent();
    //启动的界面,属于哪一种动作.pick,代表的是选择内容,选取某个数据
    intent.setAction("android.intent.action.PICK");
    //用于界定,选择的是什么类型的数据(这里需要获取电话号码数据)
    //如:intent.setType("image/*");intent.setType("video/*");
    intent.setType("vnd.android.cursor.dir/phone_v2");
    
    startActivityForResult(intent, 1);


    3,获取数据

    经过实验,发现返回的是所选定的联系人Uri,找到模拟器的文件目录中的数据库文件,对数据库进行分析获取需要的数据,这里使用SQLite Expert Professional 打开,如果软件报错,不用管,直接按照Uri的显示的路径找到我们需要的数据表,contacts2--> data表,其中我们需要的是电话号码,即data1列的数据,即这里查询返回的条件设置为data1,如果需要其他数据,可自行设置.

    Uri: content://cpom.android.contacts/data/2,

    文件地址:/data/data/com.android.providers.contacts/databases/contacts2.db

    data1: 在安卓中有系统提供的字符串常量使用ContactsContract.CommonDataKinds.Phone.NUMBER( 就是data1),也可以直接写"data1".

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	//没有点击条目直接点返回
    	if(data == null ){
    		return;
    	}
    		
    	//content://cpom.android.contacts/data/134.具体的联系人的路径
    	Uri uri = data.getData();
    		
    	//获取内容解析者
    	ContentResolver resolver = getContentResolver();
    		
    	//查询数据
    	Cursor cursor = resolver.query(uri, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, null, null, null);
    	if(cursor.moveToFirst()){
    		String phone = cursor.getString(0);
    	}
    		
    	cursor.close();
    
    	super.onActivityResult(requestCode, resultCode, data);
    }



    展开全文
  • 安卓调用手机通讯录选择联系人

    千次阅读 2018-11-21 12:07:44
    项目需求是从手机通讯录中选择联系人姓名、手机号返回,尝试很多方法未果,终于成功,特此备份。   调起通讯录的方法: Intent jumpIntent = new Intent(Intent.ACTION_PICK); //从有电话号码的联系人中选取 ...

    项目需求是从手机通讯录中选择联系人姓名、手机号返回,尝试很多方法未果,终于成功,特此备份。

     

    调起通讯录的方法:

    Intent jumpIntent = new Intent(Intent.ACTION_PICK);
    //从有电话号码的联系人中选取
    jumpIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
    startActivityForResult(jumpIntent, SELECT_CONTACT);

    回调获取:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        if(resultCode == RESULT_OK){
    
            switch (requestCode){
    
                case SELECT_CONTACT:
                    //选择通讯录联系人返回
    
                    if(data == null){
                        return;
                    }
    
                    try {
    
                        if (data.getData() != null) {
    
                            Cursor cursor = getContentResolver()
                                    .query(data.getData(),
                                            new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
                                            null, null, null);
    
                            while (cursor.moveToNext()) {
    
                                //取出该条数据的联系人姓名
                                String name = cursor.getString(1).replaceAll(" ", "");
                                //取出该条数据的联系人的手机号
                                String number = cursor.getString(0).replaceAll(" ", "").replaceAll("-", "");
    
                                if(number.length() > 11){
                                    number = number.substring(number.length() - 11, number.length());
                                }
    
                                et_connect_phone.setText(number);
                                et_connect_phone.setSelection(number.length());
                            }
    
                            cursor.close();
                        }
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
    
    
                    break;
    
                default:
                    break;
            }
        }
    }
    
    
    展开全文
  • 搜索和选择联系人

    2019-09-30 22:31:19
    相关类packages/apps/Contacts/src/...
  • 1 说明 2 配置账户 3 导出和导入联系人 4 创建规则和来信提示 5 创建快速步骤
  • android之选择联系人并返回电话号码

    万次阅读 2015-01-16 21:20:03
    在跟着这个教程联系的时候,它所用到的选择联系人方式是自己从数据库里把联系人读取出来,然后用listview显示,选择后返回手机号码, 这样做在点击选择联系人的时候,需要时间去加载,并且显示出来的联系人好像并不...
  • outlook2010如何导入csv的通讯录?

    千次阅读 2013-02-28 10:46:33
    1, 打开Outlook2010,依次单击“文件>打开>导入”。 2,在导入和导出向导中,选择“从另一程序或文件导入”,然后按“下一步”。...5,“目标文件夹”选择联系人”,按“下一步”。 6, “映射自定义字段”千万别
  • 在outlook中批量导入MSG文件

    万次阅读 2013-03-14 10:40:51
    outlook的导入功能里只支持psd之类的文件,不能对msg格式的联系人文件进行导入,实际上,只需要在outlook左侧边栏选择联系人,然后将msg文件拖入联系人区域内即可,是不是很简单呢?
  • 具有邮件功能的用户和联系人在形式上有相似之处,两者在Exchange服务器中都没有邮箱,而且都拥有外部邮件地址。两者的区别在于,具有邮件功能的用户一般是企业内的员工,在Active Directory中有自己的账号,可以登录...
  • 毕业设计选择导师问题

    千次阅读 2015-05-14 12:06:01
    一、导师要教授或者副教授。 原因:这两者都有自己的教研室,在做毕设时可以去教研室,遇到问题可以问学长,进度很快,如果是讲师的话,想我的导师他是没有教研室的,他本人又很忙不可能知道我们一些很具体的...
  • C++ 通讯录设计(一)

    万次阅读 2020-06-27 10:02:12
    #include<iostream> #include<string> using namespace std; ...//- 封装函数显示该界面如void showMenu() // - 在main函数中调用封装好的函数 ... "*****1、添加联系人*****" <<.
  • 2010 outlook导入QQ邮箱联系人

    万次阅读 热门讨论 2012-04-07 16:41:04
    今天打开foxmail的时候,发现自己的已经是老版本了,为了体验一下最新的版本,从网上下载安装了最新版本7.0.1.90。可是当我在添加新帐号的时候出现“未响应”并且自己就关闭了,进行其他操作的时候反映很慢,感觉很...
  • Outlook2010 导入联系人

    万次阅读 2010-12-30 16:16:00
    1:自己通过excel编辑一个联系人列表 2:导入excel 格式的联系人 【文件】-【打开】-【导入】 <br /> <br />  3: 可将excel 中的列和联系人相关信息进行映射:直接从左边拖到右边...
  • C++ 通讯录设计(七)

    万次阅读 2020-06-27 12:57:03
    1、清空联系人 功能描述:清空通讯录中所有信息 清空联系人实现步骤 ●封装清空联系人函数 ●测试清空联系人 1.1封装清空联系人函数 实现思路:将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做...
  • Office 的 outlook和之前...1 首先导出foxmail的联系人 点击联系人 打开联系人文件夹 点击右边的 导出 注意文件的格式为: csv 2 导入outlook 首页选择如下: 选择这个 然后
  • 点击电话按钮,进入到手机通讯录,直接...读取联系人,所以申请权限 点击电话按钮跳转 startActivityForResult(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), 0);实现获取号码 @Override
  • C++ 通讯录设计(五)

    万次阅读 2020-06-27 12:15:16
    1、查找联系人 功能描述:按照姓名查看指定联系人信恿 查找联系人实现步骤 ●封装查找联系人函数 ●测试查找指定联系人 1.1封装查找联系人函数 实现思路:判断用户指定的联系人是否存在,如果存在显示信息,不存在则...
  • 基于 Google Gmail 同步 Android 手机联系人到 iPhone 手机通讯录
1 2 3 4 5 ... 20
收藏数 389,638
精华内容 155,855
关键字:

选择联系人