当前位置:  编程技术>移动开发
本页文章导读:
    ▪批量平添联系人        批量添加联系人 说实话,我找了一整天的帖子,好像所有关于批量添加联系人的帖子都是复制一个人的!   然后那一个人又没说清楚。   以下是我做的,可能有不对! 实现功能就好吧。我.........
    ▪ 【6.21】startActivityForResult传送Intent数据        【6.21】startActivityForResult传递Intent数据 接上,设置完之后要传回数据且立刻生效,则可以用startActivityForResult(),和startActivity()有所不同(另一种方法可以是检测按键返回,当返回时做一些全.........
    ▪ IMSI跟IMEI的意思       IMSI和IMEI的意思 以下内容从网上搜集得到: 系统的UIM卡介绍   目前CDMA终端在全球绝大多数地区仍采用机卡合一的方式,即所有的信息都是存储在CDMA终端的NAM(Name Address Module)存储区中,运.........

[1]批量平添联系人
    来源: 互联网  发布时间: 2014-02-18
批量添加联系人

说实话,我找了一整天的帖子,好像所有关于批量添加联系人的帖子都是复制一个人的!

 

然后那一个人又没说清楚。

 

以下是我做的,可能有不对! 实现功能就好吧。我感觉

 

API上,还有sample里面都有现成的,不过讲批量处理也只是用的特定的一个联系人来说的!

 

结果我不知道是不是要循环往ops里面add联系人 最后一起来applyBatch

 

幸好猜想没有太离谱!直接上代码吧。

/**

*list里面存储的是我要批量加入的联系人列表

*withYieldAllowed(true)这句例子跟其他的地方都没写,看了下官方文档才知道批量操作容易长时间占用数据库

* 所以要写这个屈服点来保证其他要读库的程序来中断这个操作,不加会出错!

*rawContactInsertIndex = ops.size();刚开始自以为是用循环的i来代替结果通讯录混乱了!

*/

 

public static void CopyAll2Phone(List<ContactInfo> list,Context ctx){

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

int rawContactInsertIndex;

for (int i = 0; i < list.size(); i++) {

      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(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, list.get(i).name)

                    .withYieldAllowed(true)

                    .build());

      ops.add(ContentProviderOperation.newInsert(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, list.get(i).number)

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

                    .withYieldAllowed(true)

                    .build());

 

      try {

//这里才调用的批量添加

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

       

} catch (RemoteException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (OperationApplicationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

}


 

 

1 楼 yx1989 2011-12-26  
Error inserting sourceid=8635ce7f94feaab2 contact_id=null account_name=pcsc account_type=com.htc.android.pcsc

这是什么情况?
2 楼 yx1989 2011-12-26  
yx1989 写道
Error inserting sourceid=8635ce7f94feaab2 contact_id=null account_name=pcsc account_type=com.htc.android.pcsc

这是什么情况?



在另一台defy上木有问题。。。。
3 楼 qiuyouzhi 2012-06-13  
你好,我用这种方式插入联系人,当联系人在二三百条时候,将近耗了3分钟,无法承受,其次批量加入最多只能500条,请问你有什么好的方式能把时间缩短到一分钟内啊
4 楼 yx1989 1 小时前  
qiuyouzhi 写道
你好,我用这种方式插入联系人,当联系人在二三百条时候,将近耗了3分钟,无法承受,其次批量加入最多只能500条,请问你有什么好的方式能把时间缩短到一分钟内啊

最好是,每次插的数量限制在30个左右,不然缓存压力太大。

    
[2] 【6.21】startActivityForResult传送Intent数据
    来源: 互联网  发布时间: 2014-02-18
【6.21】startActivityForResult传递Intent数据

接上,设置完之后要传回数据且立刻生效,则可以用startActivityForResult(),和startActivity()有所不同(另一种方法可以是检测按键返回,当返回时做一些全局设置的工作)

 

startActivityForResult(Intent intent, int requestCode)

requestCode是用来区分各个是哪个Intent传回数据,是一个大于零的int

 

setResult(int resultCode, Intent intent)

上一篇的设置是用key来区分各个设置项,但是没key可以设置的条件下,可以用resultCode来区分是哪个项传回数据

 

onActivityResult(int requestCode, int resultCode, Intent intent)

intent返回时,可以用这个方法来处理数据,参数意义同上


    
[3] IMSI跟IMEI的意思
    来源: 互联网  发布时间: 2014-02-18
IMSI和IMEI的意思

以下内容从网上搜集得到:

系统的UIM卡介绍

 

目前CDMA终端在全球绝大多数地区仍采用机卡合一的方式,即所有的信息都是存储在CDMA终端的NAM(Name Address Module)存储区中,运营商可通过OTA(Over The Air)技术进行NAM数据的更改。

 

中国联通在推广CDMA时,首次采用了机卡分离技术,把NAM中的信息和手机终端的信息都剥离到一个UIM(User Identification Module)卡中,当进行业务处理时,手机从UIM卡中获得相关的信息。可以看出,UIM卡与GSM的SIM卡的功用是一样的。

 

UIM卡中包含的主要参数有IMSI(MIN),ESN(手机的电子序列号)和鉴权参数A-KEY等。ESN在某些时候也被称为UIMID.

 

IMSI,ESN,MDN存储在不同的网络实体中. MDN(Mobile Directory Number)是每个用户的个人号码,在中国联通这个号码是以133打头的,MDN存储在HLR中。 IMSI是系统内部对每个用户的标识,存储在UIM卡中。用户购买了一张UIM卡,并选择了一个号码,就建立了IMSI和MDN的对应关系,这个对应关系存储在HLR中。阿

 

网络参数的基本交互过程如下图:

 

 

 

1)手机在开机或者拨打电话时,把IMSI和ESN上报给MSC.

 

2)MSC以IMSI为索引检测数据库,发现没有相关记录,MSC发送登记请求到HLR,试图获取相关信息。

 

3)HLR以IMSI为索引,进行数据查询,如果数据有效,就把查到的MDN,用户签约信息等下发给MSC,否则,直接拒绝。

 

4)MSC获得了MDN和其他一些签约信息,就可以进行相关的业务处理,这个MDN可以作为主叫号码显示给被叫用户,或者填写在话单中。

 

5)在用户做被叫时,GMSC将通过被叫的MDN到HLR中去查询当前用户在哪个MSC下.当前为用户服务的MSC最终会以IMSI作为标识下发寻呼消息(paging),从而找到用户。

 

2.       IMSI(MIN)介绍

 

CDMA规范由美国标准组织ANSI制定,在IS95A,IS95B阶段,采用MIN(Mobile Identification Number)来标识用户。后来随着CDMA在全球的应用,国际漫游的问题显得很突出,于是对MIN进行了扩展,变成了IMSI(International Mobile Subscriber Identification)。

 

从技术上讲,IMSI可以彻底解决国际漫游问题。但是由于北美目前仍有大量的AMPS系统使用MIN号码,且北美的MDN和MIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主。其中以O和1打头的MIN资源称为IRM(International Roaming MIN),由IFAST (International Forum on ANSI-41 Standards Technology)统一管理。目前联通申请的IRM资源以09打头。可以看出,随着用户的增长,用于国际漫游的MIN资源将很快耗尽,全球统一采用IMSI标识用户势在必行。

 

MIN共有10位,其结构如下:

 

 

 

其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。

 

IMSI共有15位,其结构如下:

 

 

 

MCC:Mobile Country Code,移动国家码,共3位,中国为460;

 

MNC: Mobile Network Code,移动网络码,共2位,联通CDMA系统使用03,一个典型的IMSI号码为460030912121001。

 

可以看出IMSI在MIN号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别。

 

早期的IS95系统都采用MIN来标识用户,CDMA2000系统为了保持对MIN的兼容,对于IS95手机上报的MIN,针对IFAST的规划,在MIN前增加MCC或者MNC,构造出IMSI。

 CDMA手机的序列号称为ESN(俗称电子串号),由手机生产厂商写入每一台手机,并且每台手机各不相同,它由8位十六进制字符组成。ESN定义是这样的:ESN是唯一能识别一个移动台设备的32比特的号码,每个双模移动台分配一个唯一的电子序号,由厂家编号和设备序号构成。它能够在无线系统中唯一地识别移动台,就跟身份证一样。对应于一个ESN,可以分配一个唯一的手机号码。ESN在CDMA中的主要作用用来识别移动设备的。所谓一个ESN分配一个手机号码,那是针对机卡一体的手机而方,而在韩国、日本和美国都是使用机卡一体的CDMA手机。

 

  国际移动设备识别码(IMEI:International Mobile EquipmentIdentification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。IMEI组成如下图所示,移动终端设备通过键入“*#06#”即可查得。其总长为15位,每位数字仅使用0~9的数字。其中TAC代表型号装配码,由欧洲型号标准中心分配;FAC代表装配厂家号码;SNR为产品序号,用于区别同一个TAC和FAC中的每台移动设备;SP是备用编码。

  IMEI俗称“串号”存储在手机的EEPROM(俗称码片)里,熟悉并了解这个号码对我们今后识别手机会起到非常大的作用。首先TAC码前三位在不同的时期会发生变化,过去的TAC码前三位在现在的手机上不会出现。过去的一些老型号的手机基本上都是446/448开头,如moto v328 nokia 7110,而且即使同一部手机在不同的时期也会有不同的TAC码如大家最熟悉的8210升级8250,如果前三位是448902就不能升级,因为CPU不同。因此过去所说的只要是同一型号的手机TAC码一定一样的说法是不够准确的,再如爱立信的同一型号手机T39MC在不同地区的地方亦会有不同的号码:大陆行货为520406,香港则为520407。我们知道这些区别后就可以通过TAC码来进行“设备识别”了,而不必去费心的去牢记IMEI的7.8位数字代表的产地。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3