Android 自动向手机添加联系人(测试数据用)

本文介绍了一个Android应用程序,该程序能够批量创建新的联系人条目,并为每个联系人分配电话号码和名称。通过使用多线程的方式进行处理,提高了添加联系人的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



import android.content.ContentProviderOperation;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;


import java.util.ArrayList;

import java.util.Random;


public class MainActivity extends AppCompatActivity {

static  final String CHARACTERS="ABCDEFGHJIKLMNOPQRSTUVWXYZ1234567890";

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        startThread();

      //  test1();

    }

//    public void test1(){

//        System.err.println("");

////        char[] str = "".toCharArray();

////        for (char ch:str ) {

////            System.err.println("CH:" + ch + " "  + String.valueOf(ch).matches("[a-zA-Z]"));

////        }

//

//    }

    public void startThread(){

        for (int i = 0; i <4 ; i++) {

            moreThread(2000*i);

        }


    }

    private void addToPhoneContact(String number, String name) {

        try {

            ArrayList<ContentProviderOperation> ops = new ArrayList<>();

            ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);

            builder.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null);

            builder.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null);

            ops.add(builder.build());


            // Name


            builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);

            builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);

            builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);

            builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);

            ops.add(builder.build());


            // Number

            builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);

            builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);

            builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);

            builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,  number);

            builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);

            ops.add(builder.build());


            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);


        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public  String randomString(int length){

        char[] text=new char[length];

        Random random=new Random();

        for (int  i= 0; i < length ; i++) {

            text[i]=CHARACTERS.charAt(random.nextInt(CHARACTERS.length()));


        }

        return new String(text);


    }

    public void moreThread(final int startNumber){

        new Thread(new Runnable() {

            @Override

            public void run() {

                for (int i = startNumber; i <startNumber+2000 ; i++) {

                    addToPhoneContact("8765" + String.format("%04d", i), randomString(4));


                }

                for (int i = startNumber; i <startNumber+2000 ; i++) {

                    addToPhoneContact("7765" + String.format("%04d", i), randomString(4));

                }

                Log.e("aa","finish5");

            }

        }).start();

    }

}


转载于:https://my.oschina.net/u/2444750/blog/534079

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值