android 联系人批量插入,GitHub - Atinerlengs/InsertDemo: android 简单的批量插入通话记录、联系人、短信demo...

[toc]

批量插入

批量插入通话记录

下面是添加通话数据的代码,我们自己去构造Tb_calllogs数据,里面可以添加通话记录数据字段,由于是个简单的demo,所以只加了number、callType、date、callDuration。

/**

* 添加通话数据

*

* @throws RemoteException

* @throws OperationApplicationException

*/

public void addTbCalllogs() throws RemoteException, OperationApplicationException {

int calllogNumber = 0;

if (calllogEditText.getText() != null) {

calllogNumber = Integer.parseInt(calllogEditText.getText().toString());

}

if (calllogNumber == 0) {

Toast.makeText(this, "请输入正确的条数", Toast.LENGTH_SHORT).show();

return;

}

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

Tb_calllogs tb_calllogs = new Tb_calllogs(getNumber(),

getCallType(), getDate(), getCallDuration());

mTbCalllogList.add(tb_calllogs);

}

showProgressDialog();

}

生成随机号码代码如下,默认直接136开头,如果有需求可以替换成其它号码。

private String getNumber() {

StringBuilder number = new StringBuilder("136");

Random random = new Random();

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

number.append(random.nextInt(9));

}

return number.toString().toLowerCase();

}

批量添加通话记录如下,通话applyBatch()方法去批量添加

public void BatchAddCallLogs()

throws RemoteException, OperationApplicationException {

ArrayList ops = new ArrayList();

ContentValues values = new ContentValues();

for (Tb_calllogs calllog : mTbCalllogList) {

values.clear();

values.put(CallLog.Calls.NUMBER, calllog.getmNumber());

values.put(CallLog.Calls.TYPE, calllog.getmCallLogType());

values.put(CallLog.Calls.DATE, calllog.getmCallLogDate());

values.put(CallLog.Calls.DURATION, calllog.getmCallLogDuration());

values.put(CallLog.Calls.NEW, "0");

ops.add(ContentProviderOperation

.newInsert(CallLog.Calls.CONTENT_URI).withValues(values)

.withYieldAllowed(true).build());

}

if (ops != null) {

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

}

}

批量插入联系人

先构造联系人数据Tb_contacts,目前只加了name和number,代码如下

public void addTbContacts() throws RemoteException, OperationApplicationException {

int contactsNumber = 0;

if (contactsEditText.getText() != null) {

contactsNumber = Integer.parseInt(contactsEditText.getText().toString());

}

if (contactsNumber == 0) {

Toast.makeText(this, "请输入正确的条数", Toast.LENGTH_SHORT).show();

return;

}

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

Tb_contacts tb_contacts = new Tb_contacts(getName(), getNumber());

mTbContactsList.add(tb_contacts);

}

showProgressDialog();

}

生成随机汉子,随便加了两个汉子,代码如下:

private String getName() {

StringBuilder stringBuilder = new StringBuilder("");

int hightPos;

int lowPos;

Random random = new Random();

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

hightPos = (176 + Math.abs(random.nextInt(39)));

lowPos = (161 + Math.abs(random.nextInt(93)));

byte[] b = new byte[2];

b[0] = (Integer.valueOf(hightPos)).byteValue();

b[1] = (Integer.valueOf(lowPos)).byteValue();

try {

stringBuilder.append(new String(b, "GBK"));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

return stringBuilder.toString().toLowerCase();

}

批量添加到联系人,具体代码如下:

public void BatchAddContact()

throws RemoteException, OperationApplicationException {

ArrayList ops = new ArrayList();

int rawContactInsertIndex = 0;

for (Tb_contacts contact : mTbContactsList) {

rawContactInsertIndex = ops.size();

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)

.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)

.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)

.withYieldAllowed(true).build());

// 添加姓名

ops.add(ContentProviderOperation

.newInsert(

android.provider.ContactsContract.Data.CONTENT_URI)

.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,

rawContactInsertIndex)

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

.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contact.getName())

.withYieldAllowed(true).build());

// 添加号码

ops.add(ContentProviderOperation

.newInsert(

android.provider.ContactsContract.Data.CONTENT_URI)

.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,

rawContactInsertIndex)

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

.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, contact.getNumber())

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

.withValue(ContactsContract.CommonDataKinds.Phone.LABEL, "").withYieldAllowed(true).build());

}

if (ops != null) {

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

}

}

批量插入短信

同样的先构造Tb_mms数据,添加了number,smsType,smsIsRead等字段。添加短信数据如下:

private void addTbMms() throws RemoteException, OperationApplicationException {

int mmsNumber = 0;

if (mmsEditText.getText() != null) {

mmsNumber = Integer.parseInt(mmsEditText.getText().toString());

}

if (mmsNumber == 0) {

Toast.makeText(this, "请输入正确的条数", Toast.LENGTH_SHORT).show();

return;

}

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

Tb_sms tb_mms = new Tb_sms(getNumber(), getSmsType(), getSmsIsRead());

mTb_sms.add(tb_mms);

}

showProgressDialog();

}

插入短信数据代码如下:

private void insertSms() {

for (Tb_sms sms : mTb_sms) {

ContentValues values = new ContentValues();

values.put(Telephony.Sms.ADDRESS, sms.getNumber());

values.put(Telephony.Sms.DATE, System.currentTimeMillis());

long dateSent = System.currentTimeMillis() - 5000;

values.put(Telephony.Sms.DATE_SENT, dateSent);

values.put(Telephony.Sms.READ, sms.isRead());

//values.put(Telephony.Sms.SEEN, false);

values.put(Telephony.Sms.TYPE, sms.getType());

//values.put(Telephony.Sms.STATUS, Telephony.Sms.STATUS_COMPLETE);

values.put(Telephony.Sms.BODY, "您尾号为9386的招行储蓄卡收到转账1,000,000人民币");

values.put(Telephony.Sms.TYPE, Telephony.Sms.MESSAGE_TYPE_INBOX);

getContentResolver().insert(Telephony.Sms.CONTENT_URI, values);

}

}

PS: Android4.4之后,插入短信数据需要修改几个地方,在AndroidManifest.xml里面的Activity添加如下代码:

在MainActivity.java里面添加如下代码去获取默认短信应用:

defaultSmsPkg = Telephony.Sms.getDefaultSmsPackage(this);

mySmsPkg = this.getPackageName();

if (!defaultSmsPkg.equals(mySmsPkg)) {

Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);

intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, mySmsPkg);

startActivity(intent);

}

结束的时候需要在把默认的短信数据替换代码如下:

String myPackageName = getPackageName();

if (Telephony.Sms.getDefaultSmsPackage(this)

.equals(myPackageName)) {

Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);

//这里的defaultSmsApp是前面保存的

intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, defaultSmsPkg);

startActivity(intent);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html页面按钮删除一条数据库,需要添加一个删除按钮到一个HTML表格从数据库中删除记录与消息...

IDNameCodeActiveEdit<?php foreach($nurseries->result() as $nursery) { ?><?php echo $nursery->id; ?><?php echo $nursery->name; ?><?php echo $nursery->code; ?><?php echo set_bool($nursery->active); ?><…

EL表达式, JSTL, 获取map集合中key的value

序言&#xff1a;今天在项目中使用了map存储list和普通对象&#xff0c;但是在jsp中显示的时候出来问题&#xff0c;后经查阅&#xff0c;终于解决&#xff0c;现在记录一下&#xff0c;以便以后查阅&#xff1a; 一&#xff1a;后台代码如下&#xff1a; package cn.gov.csrc…

html选择器是什么,CSS3选择器是什么?

首先我们来看一下displaynone的意思是什么&#xff1f;display:none的意思&#xff1a;隐藏元素并脱离文档&#xff0c;流就是隐藏该区域&#xff0c;不占实际空间&#xff0c;但对后台来说真实存在&#xff0c;可以获取被隐藏的元素简单的来说就是将元素设置为none的时候既不会…

零基础学计算机408,又一所重点大学改考408!21计算机考研会全面408吗?

【北京工业大学】于7月17日发布《关于北京工业大学2021年全国硕士研究生招生考试部分考试科目及考试大纲调整的通知》&#xff0c;要点如下&#xff1a;文法学部0401教育学专业课改考 311统教育学信息学部计算机学院0812计算机科学与技术0839网络空间安全0854电子信息 (专业学位…

国贸专业要考计算机二级,国贸专业考计算机二级有没有必要

类似问题答案我是自动化专业的学生&#xff0c;大一的时候有没有必要考计算机二级证书计算机二级 虽然不是很重要 但是考了也是有好处的 自动化的跟计算机联系非常大 二级证不怎么重要 但是C语言很重要 对于你们 希望你还是去考个二级作为学习建筑类专业的学生,如果考试计算机二…

edge如何导入html文件收藏夹,edge浏览器收藏夹如何导入?edge浏览器收藏夹导入方法...

在使用浏览器的时候需要用户进行多方便的导入和使用&#xff0c;这样在数据共享和传递的时候才会更加的方便&#xff0c;那么这款软件要如何操作使用呢&#xff0c;有兴趣的用户可以使用手机快速申请使用&#xff0c;帮助用户的生活&#xff0c;让用户的生活更加的便捷&#xf…

中职生计算机专业600分,来了!超全盘点高职分类中500-600分及以上的高中生能报的专业和院校名单!...

福建高职分类考试志愿填报4月27日开始&#xff0c;招生计划不断更新中关注【福建高考】&#xff0c;免费使用志愿填报工具参加高职分类的同学们志愿填报在即&#xff0c;你定好目标了吗&#xff1f;本期&#xff0c;小编为大家盘点高职分类各分段的高中生能报哪些专业和大学~一…

Oracle中通过:触发器,存储过程,Function调用实现解析Clob字段类型中存储的xml字符串...

摘要&#xff1a;最近项目中用到了存储过程&#xff0c;触发器&#xff0c;Function&#xff0c;由于以前没怎么用过&#xff0c;所以查资料&#xff0c;请教同事&#xff0c;最后总算是把问题解决了&#xff0c;问题是这样的&#xff0c;数据库中有三张表一张是存放从远程服务…

plc采用计算机结构如何理解,PLC的基本结构

plc实质是一种专用于工业控制的计算机&#xff0c;其硬件结构基本上与微型计算机相同&#xff0e;a. 中央处理单元(CPU)中央处理单元(CPU)是PLC的控制中枢。它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据&#xff1b;检查电源、存储器、I/O以及警戒定时器…

华为手机怎么用计算机玩隐藏空间,玩法 | 华为手机这五个隐藏功能,用过的都说好!...

原标题&#xff1a;玩法 | 华为手机这五个隐藏功能&#xff0c;用过的都说好&#xff01;欢迎转载&#xff0c;请注明出处&#xff0c;抄袭必究&#xff01;近年来国产手机都很争气&#xff0c;华为、小米、OPPO、vivo都迅速的成长起来&#xff0c;让大家告别了疯抢苹果的时代。…

Html做文章查看上一篇下一篇功能,SDCMS文章添加上一篇、下一篇

SDCMS是一款小型ASP内容管理系统管理开源程序&#xff0c;虽然是小型的&#xff0c;但是主要功能都俱备。在细节方面&#xff0c;该款开源程序没有对内置标签进行统一的管理&#xff0c;不方便日后功能的修改&#xff0c;如果需要修改或者添加&#xff0c;需要去官方网站上查阅…

微型计算机简化结构,基于FPGA的简易微型计算机结构分析与实现

0 引言通常&#xff0c;人们对微型计算机的工作原理及硬件结构的了解来源于书本知识&#xff0c;深入理解掌握其功能特点比较困难&#xff0c;要自己亲手去做一个类似功能的微型计算机更是不可能。随着可编程逻辑器件的广泛应用&#xff0c;为数字系统的设计带来了极大的灵活性…

django 返回ajax html,Django 前台通过json 取出后台数据

前台通过json 取出后台数据步骤1:后台数据通过 JSON 序列化成字符串注意&#xff1a;1、json是1个字符串2、通过json.dumps(xxx) 序列化成 1个字符串的 字典对象views.pydef ajax(request):if request.methodPOST:print(request.POST)data{status:0,msg:请求成功,data:[11,22,3…

Toad for Oracle 导入MIP.dmp文件时:报内存不足时的解决办法:

摘要&#xff1a;最近在使用Oracle数据库开发项目&#xff0c;其中在用Toad for Oracle连接操作Oracle11g的时候出现了问题&#xff0c;问题是这样的&#xff1a;在数据库管理员的连接下导入已经建立的用户的dmp文件&#xff0c;会报内存不足的问题&#xff0c;最后经查&#x…

长春金桥计算机学校,金桥学校2017年招生简章

原标题&#xff1a;金桥学校2017年招生简章金桥学校创建于2000年5月&#xff0c;现有45个教学班&#xff0c;在校学生2700余人。近年来&#xff0c;学校以“培养高素质的现代中国人”为办学目标&#xff0c;坚持“德育为首、做人第一”的办学理念&#xff0c;积极改革创新&…

计算机联锁软件毕设论文,铁路信号计算机联锁系统()毕设论文.doc

铁路信号计算机联锁系统()毕设论文PAGE北京交通大学信号10级毕业论文题 目 微机联锁系统故障及处理分析专 业 铁道信号班 级 10信号姓 名 陈 勇二0一二 年 七 月摘 要计算机联锁系统是实现铁路现代化和自动化的基础设施之一&#xff0c;是一种高效、安全的车站联锁设备&#xf…

工业炉温度计算机控制系统,热处理工业炉计算机控制系统组态王+PLC)

品牌景欣型号Autocarb工作电压220V(V)输出频率50(kHz)产品认证已认证jsj型可控气氛工艺过程计算机集散控制系统&#xff0c;由上位工业控制计算机或者工作站&#xff0c;下位由智能数显温度控制仪表&#xff0c;智能可编程碳势控制仪表&#xff0c;嵌入式控制仪表&#xff0c;p…

集装箱计算机跟踪管理方式,集装箱总复习

国际集装箱运输与多式联运第一章一、名词解释1、集装箱运输&#xff1a;就是将货物装在集装箱内&#xff0c;以集装箱作为一个货物集合或成组单元&#xff0c;进行运输、装卸、搬运的运输工艺和运输组织形式。2、集装箱运输系统&#xff1a;是指集装箱运输全过程所涉及的各个环…

计算机技术与通讯,通信技术与计算机技术的融合发展

产 城 96数字应用通信技术与计算机技术的融合发展聂东辉摘要&#xff1a;通信在人类社会发展和进步中发挥的作用毋庸置疑。通信方式的变革和通信技术的进步在很大程度上改变了人类社会的发展进程。目前通信技术和各个行业结合越来越亲密&#xff0c;因此我们在未来必须要通过对…

Oracle中通过substr和instr实现截取指定字符之间的字符串:

摘要&#xff1a;在开发项目的过程中遇到了这样的一个问题&#xff0c;就是从远程服务器取到的数据中是由一段规则的字符串组成的&#xff0c;但是你想要的还不是这段字符串&#xff0c;是其中的一段字符串&#xff0c;那就的使用Oracle强大的函数了&#xff0c;我的问题是这样…