黑马程序员安卓教程:操作系统联系人
黑马程序员安卓教程:案例
案例-智能短信需求通过该案例可以学习startActivityForResult的用法。
该案例界面如下图所示。
第一幅图是主界面,在该界面可以让用户输入电话号码和短信内容,然后发送出去。
“选择号码”点击后跳转到第二个界面,该界面列出的是通讯录中的所有号码(模拟的假数据),显然该界面是用ListView显示的,单击ListView 的单个条目后该Activity会退出,同时会将点击的数据自动填充到主界面的电话编辑框中。
点击“快速发送”按钮,打开另外一个界面,如下图第三幅,该界面使用ListView展示了常用的快速回复短信内容,当点击一个条目时关闭当前Activity,同时将点击的短信内容自动填充到主界面的短信文本编辑框中。
电话号码和短信内容选择后,点击“发送”按钮就可以将短信内容给发送出去了。
301.5.2 布局主界面使用的布局文件为activity_main.xml。
【文件1-22】activity_main.xml1.<LinearLayout xmlns:android="/apk/res/android"2.xmlns:tools="/tools"3.android:layout_width="match_parent"4.android:layout_height="match_parent"5.android:orientation="vertical" >6.7.<LinearLayout8.android:layout_width="match_parent"9.android:layout_height="wrap_content" >10.11.<EditText12.android:id="@+id/et_num"13.android:layout_width="0dp"14.android:layout_height="wrap_content"15.android:layout_weight="1"16.android:hint="请输入电话号码" />17.18.<Button19.android:layout_width="wrap_content"20.android:layout_height="wrap_content"21.android:onClick="chooseNum"22.android:text="选择号码" />23.</LinearLayout>24.25.<EditText26.android:id="@+id/et_content"27.android:layout_width="match_parent"28.android:layout_height="0dp"29.android:layout_weight="1"30.android:gravity="top"31.android:hint="请输入短信内容" />32.33.<LinearLayout34.android:layout_width="match_parent"35.android:layout_height="wrap_content"36.android:orientation="horizontal">37.38.<Button39.android:layout_width="0dp"40.android:layout_height="wrap_content"3141.android:layout_weight="1"42.android:onClick="send"43.android:text="发送" />44.45.<Button46.android:layout_width="0dp"47.android:layout_height="wrap_content"48.android:layout_weight="1"49.android:onClick="selectSend"50.android:text="快速发送" />51.</LinearLayout>52.53. </LinearLayout>“选择号码”和“快速发送”界面是一样,用的是同样的布局,只不过数据不同而已。
黑马程序员android开发笔记及源码
01、什么是3G02、android系统简介03、android背景介绍04、android的framewor简介05、两种虚拟机的比较06、sdk的下载以及简介07、创建android模拟器08、ddms简介09、platform-tools的简介及常见adb指令10、android项目的目录结构11、android下apk安装的过程12、常见的adb指令介绍13、创建模拟器遇到的常见错误14、电话拨号器15、点击事件的四种写法16、短信发送器17、相对布局&单位介绍18、现形布局&布局的组合19、表格布局&绝对布局20、帧布局21、测试相关概念22、android下junit测试框架配置23、logcat简介24、保存文件到手机内存25、android下文件访问的权限26、保存文件到SD卡中27、分析setting源代码获取SD卡大小28、_sharePreference入门29、xml文件的序列化30、采用pull解析xml文件31、采用断电调试的方法观察pull解析的的流程32、android下创建一个sqllite数据库33、sql语句实现数据库的增删改查34、系统api实现数据库的增删改查&Sqlite3工具的使用35、数据库的事物36、listView入门37、采用layoutInflater打气筒创建一个view对象38、采用数据适配器ArryAdapter39、常用数据适配器simpleAdapter40、数据适配器总结41、内容提供者简介42、内容提供者的实现43、短信的备份44、插入一条记录到系统短信应用45、内容观察者46、获取系统的联系人信息47、保存联系人到系统通讯录48、读取联系人的一个小细节49、网络图片查看器50、anr产生的原理&如何避免51、android消息机制入门52、网络html查看器53、字符乱码问题的处理54、采用get方式提交数据到服务器55、采用post方式提交数据到服务器56、提交数据到服务器中文乱码问题的处理57、采用httpclient提交数据到服务器58、异步http框架简介&实现原理59、异步http框架提交数据到服务器60、上传文件到服务器61、smartimageview&常见开源代码62、多线程下载的原理63、多线程断点下载的原理64、多线程java代码移植到android65、多线程下载文本页面的更新66、显示意图激活另一个activity67、隐式意图激活另一个activity68、隐式意图的配置69、隐式意图和显示意图的使用场景70、在不同activity之间数据传递71、activity的声明周期72、activity的启动模式73、activity横竖屏切换的声明周期74、开启新的activity获取他的返回值75、请求码和结果码的作用76、利用广播实现ip拨号77、短信窃听器78、自定义广播时间&发送自定义广播&广播接受者优先级79、采用服务执行长期后台操作80、采用服务窃听电话&服务的声明周期81、android进程优先级&为什么使用服务82、绑定方式开启服务&调用服务的方法83、服务的声明周期(混合开启84、采用aidl绑定远程服务85、代码注册广播接受者&利用广播调用服务的办法86、加载大图片到内存87、获取图片exif信息88、从gallery获取图片89、图片画画板90、扒开美女衣服91、图片的缩放92、图片的旋转93、图片的平移&镜面&倒影效果94、图片的合成95、图片的颜色处理96、多媒体播放api简介97、人脸识别98、mediaplayer的生命周期99、soundpoo简介100、sufaceview的生命周期101、播放在线视频102、视频播放器进度的处理103、调用系统照相机拍照和录像104、采用camera拍照105、常见对话框106、notification入门107、菜单108、android下的样式109、android下的主题110、代码编写ui111、html创建ui112、帧动画113、代码创建创建的tween动画114、xml文件定义动画115、传感器简介116、117、杀死进程118、apk的安装119、应用程序的反编译120、动态创建fragment121、用fragment创建一个选项卡122、fragment的向下兼容性123、fragment的生命周期124、fragment之间的通讯125、应用程序国际化04、android的framewor简介Wap:wait and playWireless Makeup Language(WML)精简的html语言Applications:android自带的基本上层应用Aplication framework:应用程序框架Librarics:Linux lernel:05、两种虚拟机的比较编译后文件格式:jvm:.java->.class->.jardalvik vm:.java->.dex->.odex基于的架构:jvm:基于栈的架构dalvik vm:基于寄存器的架构Cpu直接访问寄存器因此dalvik虚拟机的效率比jvm高06、sdk的下载以及简介->获取sdk工具包(sdk:standard develope kits)->ADT(android develop tools,实际上是eclipse的插件)SDK具体内容Android->SDK Plateform:开发时使用到的jar包->Samples for sdk:->ARM EABI V7a System Image:模拟器运行时的镜像->Intel n86 Aton System:模拟器运行时的镜像->MIPS System Image:模拟器运行时的镜像->google APIs:google提供的jar包,可以直接使用google提供的一些API ->source for android SDK:SDK全部的源代码Extrals:->tools:开发的工具->support library:实现高版本的android向下的兼容->google Admed Ads SDK:gongle提供的广告插件->Analyties App Irackiong SDK:应用的用户分析->cloud message:云消息->gongle play service:收费服务->google USB Driver:真实的设备驱动开发时:基于4.0,兼容2.2、2.3.307、创建android模拟器avd:android virture developerVGA:480*640(电视的标准分辨率)QVGA:240*320(四分之一)HVGA:320*480(一半)WVGA:480*800(width)FWVGA:480*854(更宽)08、ddms简介ddms:模拟器不支持中文,因此发送中文会显示不出来09、platform-tools的简介及常见adb指令Android调试桥:内部实现就是socket让两个系统之间实现数据交互->reset adb:模拟器找不到时候可以重启->adb device:列出所有的连接的设备->adb kill-server:杀死adb调试桥->adb start-server 启动adb调试桥dx.bat:将.class文件打包10、android项目的目录结构一:SDK的目录结构->Samples->Api demo:根据API demo(模拟器上面可以看见)的效果可以在sample中看见相应的代码->Source:jar包所有的sdk源代码都在这个文件夹里->SystemImage:系统镜像->temp:下载更新临时存储的文件夹,一般是空的->tools:emulater.ext 不同版本的模拟器二:New Android Application->theme:留给以后作为扩展,现在并没有太大的作用->target SDK:一般选择高版本,因为高版本对下兼容->mark project as a library:一般不选择,意思是将这个项目提供一个jar包供别人使用三:文件夹目录.setting:设置目录assets:资产目录,存放一些文件,这些文件会被原封不动打包到应用程序的apk中bin:gen:自动生成的目录->builderConfig.java:生成的配置信息->R.java:Android 4.1.2->android.jar开发环境,jar包可以在properties中修改,jar包就是SDK011、Android下apk的安装过程一、Android安装过程分析:->setContentView:甚至view的对象,把里面的xml文件加载到->在project中选择build automaticly会自动把文件生成字节码文件,.class $代表的class文件生成的是内部类->dex.bat文件会把.class文件生成.dex文件->apk压缩文件解压内部内容->META-INF:应用程序的签名eclipse的调试签名文件->res:资源文件->classes.dex:class文件->resources.arsc:资源ID映射->android软件安装的过程:->拷贝xxx.apk带/data/app/xxx-1.apk->在/data/data目录下创建一个文件夹,文件夹名称当前应用程序的报名012、常见adb指令前提:->设备连接上电脑而且驱动安装正常,如果安装不正常的话,会有黄色的问号显示;->设备上打开USB调试;指令:->adb device(如果启动发现这个程序没有安装会自动安装)->adb kill-server->adb start-server->adb uninstall <包名>->adb -s emulator-5554 install c:\\users\\administrator\\hello.apk如果有多个设备的话,如果不指定安装的是哪个设备程序会报错->adb push haha.prop /sdcard/haha.txt 将文件移到(360管家,豌豆荚之类的软件他们也是用的adb指令,倘若电脑上装这些软件的话,会因为两个adb指令抢端口号而挂掉)(adb版本之间兼容不是很好,经常报错可以考虑下版本的问题)->adb shell:远程连接到了android的linux终端ls:显示文件夹ps:显示正在运行的程序ping:网络连通性013、创建模拟器遇到的常见错误->路径最好不要有中文:->应用安装不上,或者安装模拟器的时候开启一个新的模拟器:可能是模拟器的资源被占用,模拟器在运行的时候其实占用着硬盘上面的一个文件,这个文件位于工作空间.android/avd/iphone.avd 里面会有镜像文件,当一个模拟器开启起来了,就给你创建一个文件夹.knock的文件夹,代表着这个模拟器被锁定了,如果把模拟器关掉,就没有程序占据这几个镜像资源了,那么这几个程序就会被自动删除。
黑马程序员学生信息案列表
黑马程序员学生信息案列表
黑马程序员学生信息管理系统案例列表:
1. 学生基本信息管理:包括学生姓名、性别、年龄、联系方式等基本信息录入、修改、删除和查询等功能。
2. 学生成绩管理:包括学生各科成绩的录入、修改、删除和查询等功能,同时可以计算学生的平均分、总分等。
3. 学生考勤管理:包括学生的考勤记录录入、修改、删除和查询等功能,可以统计学生的出勤率。
4. 学生作业管理:包括学生作业的提交、批改、打分和查询等功能,方便教师对学生作业的管理。
5. 学生信息查询与导出:支持通过关键字查询学生信息,并可以将学生信息导出为Excel表格等形式,方便管理和使用。
6. 系统权限管理:对不同用户赋予不同的权限,保证系统的安全性。
7. 系统日志记录:记录用户的操作日志,方便后期排查问题。
8. 数据备份与恢复:定期备份系统数据,保证数据的安全性。
以上是黑马程序员学生信息管理系统的部分案例列表,可以根据实际需求进行定制开发,实现更加完善和个性化的功能。
黑马程序员 培训课件
黑马程序员培训课件黑马程序员是一家专注于IT培训的机构,致力于为学员提供高质量的编程教育。
他们的培训课件是他们教学的重要工具,通过课件的学习,学员能够系统地学习到各种编程知识和技能。
本文将从课件的内容、特点以及对学员的影响等方面进行探讨。
首先,黑马程序员的培训课件内容丰富多样。
课件涵盖了从基础知识到高级技术的全方位内容,包括编程语言的基本概念、算法与数据结构、数据库设计与管理、前端与后端开发等等。
无论是初学者还是有一定编程基础的学员,都能够找到适合自己的学习内容。
此外,课件还结合了实际案例和项目,让学员能够更好地理解和应用所学知识。
其次,黑马程序员的培训课件具有循序渐进的特点。
课件的内容按照难易程度和逻辑关系进行组织,从基础知识开始逐步深入,帮助学员建立起扎实的编程基础。
同时,课件还设置了一些练习题和实践项目,让学员能够通过实际操作巩固所学知识,并培养解决问题的能力。
这种循序渐进的学习方式,能够帮助学员更好地理解和掌握编程技能。
另外,黑马程序员的培训课件注重实用性。
课件内容紧密结合行业需求和最新技术趋势,教授的知识和技能都是实际工作中常用的。
学员通过学习这些实用的知识和技能,能够更好地适应工作环境,提高工作效率。
此外,课件还包含了一些实战项目,让学员能够通过实际操作来锻炼自己的实际能力。
这种实用性的培训方式,能够帮助学员更好地应对工作挑战。
除了内容丰富、循序渐进和实用性强之外,黑马程序员的培训课件还注重培养学员的综合能力。
课件中设置了一些综合性的项目和考核,要求学员能够将所学知识和技能综合运用。
这种培养综合能力的方式,能够帮助学员更好地适应工作中的复杂环境,并提高解决问题的能力。
同时,课件还注重培养学员的团队合作意识和沟通能力,通过小组讨论和项目合作等方式,让学员能够与他人合作,共同完成任务。
总的来说,黑马程序员的培训课件在内容、特点和对学员的影响等方面都具有一定的优势。
通过学习这些课件,学员能够系统地学习编程知识和技能,并培养解决问题、团队合作等综合能力。
黑马程序员:Android基础入门
Android基础入门
1. 什么是Android
Android系统最初由安迪·鲁宾等人开发制作,最初开发。
这个系统的目的是创建一个数码相机的先进操作系统,后来发现市场需求不够大,加上智能手机市场快速成长,于是Android 被改造为一款面向智能手机的操作系统。
Android于2005年8月被美国科技企业Google 收购。
2. Android版本进化史
1.5 Cupcake(纸杯蛋糕)
1.6 Donut(甜甜圈)---首次支持CDMA
2.0 Éclair(松饼)---多账户支持,第二个里程碑(第一个是1.5) 2.1 Eclair(闪电泡芙)
2.2 Froyo(冻酸奶)
2.3 Gingerbread(姜饼)---支持NFC
3.0 Honeycomb(蜂巢)
4.0 Ice cream SandWich(冰激凌三明治)---安卓历史上最重大的一次升级
4.1 Jelly Bean (果冻豆)---继蜂巢后一次全新的平板策略尝试
4.2 Jelly Bean (果冻豆)
5.0 Lime Pie (酸橙派)
3. Android体系结构
Android是一个完整的操作系统,包含了中间件和包含了一些关键的应用程序。
Android有四层架构,自上向下依次为:
应用层
应用框架层
函数库
Linux内核。
vue黑马程序员教材
vue黑马程序员教材
是一个构建用户界面的渐进式框架,基于其教材,可以按照以下步骤进行学习:
1. 安装和设置:首先需要安装和npm,然后通过cnpm(淘宝镜像)安装。
2. 基础语法:学习的核心概念,包括数据双向绑定、指令、过滤器、组件等。
3. 组件开发:深入学习的组件开发,包括组件之间的通信、插槽、混入、生命周期钩子等。
4. 路由:学习的路由,了解如何使用Vue Router进行页面导航和URL管理。
5. 状态管理:了解Vuex的使用,掌握如何在应用中进行状态管理。
6. 实战项目:通过开发一个完整的项目,将所学知识运用到实践中,加深理解和掌握。
具体教材的选择可以根据个人需求和学习风格来决定,例如《权威指南》、《实战》等都是不错的选择。
此外,还可以参考在线教程、视频教程和社区论坛等资源来学习和提升自己的技能。
黑马程序员安卓教程:读Android系统联系人DEMO之简介
读Android系统联系人DEMO之简介每一部Android手机都有联系人应用,如何在其它应用中访问系统联系人的数据?毋庸置疑,我们可以通过联系人应用的内容提供者来读取系统联系人的数据。
下面通过一个DEMO来读取系统联系人数据库中的数据记录。
1.应用场景目前市场上有许多应用都需要读取系统联系人的数据,例如:微信添加通讯录中的好友,支付宝向手机联系人转账等。
2.保存路径Android系统中联系人数据保存在系统的哪一个路径下呢?联系人又涉及到哪些表操作呢?从DDMS的文件浏览视图中找到联系人保存的数据库,如图1-1所示:图1-1所示由图1-1可知联系人数据保存在【com.android.provider.contacts】→【databases】→【contacts2.db】的路径下。
3.联系人数据关联的表导出数据库文件contact2.db,查看该数据库文件中的表结构如图1-2所示:图1-2所示由图1-2可知contact2.db数据库的设计是比较复杂的。
上图展示的只是数据库文件中所包括的部分表,该数据库文件还包括一些视图文件。
在保存联系人数据这一块主要涉及到以下三张表:●data表,保存联系人的基本数据,一个联系人可以对应多条记录●raw_contacts表,保存联系人的id,一个联系人对应一个id●mimetypes表,保存联系人基本数据的类型,一个类型用一个id来新添两个联系人,查看以上三张表的变化情况,图1-3为data表:图1-3所示下图1-4为raw_contacts表:图1-4所示图1-4联系人id表中有两个记录(即有两个联系人),contact_id分别是1和2;结合图1-3可知当raw_contant_id为1所对应的数据记录为一个人的联系信息,raw_contant_id为2所对应的数据记录是另一个人的联系信息,即联系人和联系人方式是一对多的关系。
下图1-5为mimetypes表:图1-5所示图1-5定义了一些联系方式类型的常量,一种联系方式对应一个id。
黑马程序员之创建一个简单的用户界面01
黑马程序员之---创建一个简单的用户界面01创建一个简单的用户界面Android的图形用户界面使用View和View类是通用的UI窗体小部件,比如按钮或者文本框,而View如何布局的不可视容器,比如网格(grid)布局和垂直列表(vertical list)布局。
Android提供了对应于View和View类在这一次教程里,你将学到怎样用XML创建一个带有文本输入框和按钮的界面。
在接下来的课里,你将学会对按钮做出响应,当按钮被按下的时候文本框里的内容被发送到另外一个Activity。
使用线性布局从目录res/layout里打开activity_main.xml文件(每一个新创建的Android项目都默认包含这个文件)。
注意: 在eclipse中,当你打开布局文件的时候,首先看到的是ADT布局编辑,这个编辑页是使用所见即所得的工具帮助你创建布局。
对于本课来说,你是直接在XML里进行操作,因此点击屏幕下方的main.xml标签进入XML编辑页。
在默认的情况下, activity_main.xml 中包含一个 RelativeLayout 布局和 TextView 文本框。
首先,需要删除 TextView 文本框,把 RelativeLayout 布局替换为 LinearLayout 布局. 然后添加 android: orientation 属性并设置为 "horizontal".LinearLayout 布局是**ViewGroup**是的一个子类,用于水平放置或者垂直放置子视图的部件,由属性android:orientation来设定方向。
线性布局里的子布局按照XML里设定的顺序显示在屏幕上。
另外的两个属性**android:layout_width**和**android:layout_height**,对于所有的部件都需要对这两个属性进行设置。
在这里因为线性布局是整个视图的根布局,所以对于宽和高都应该是充满整个屏幕的,指定为fill_parent。
黑马程序员资料参考
目录北京黑马培训简介: (2)报名流程: (2)自学课程: (2)上课时间安排:(实行指纹打卡,迟到10天以上劝退!) (3)课程设置:(四个月集训) (3)培训费用: (3)师资力量:(部分) (3)往届课程参考: (6)黑马晨读资料: (14)(ref. full specialization) (22)CCP(communication[kə,mju:ni'keiʃən]control [kən'trəul]processor ['prəusesə]) 通信控制处理机 (27)MIPS(millions of instructions per second 每秒百万条指令 (30)学习路线图: (40)北京黑马培训 JAVA Android IOS北京黑马培训简介:报名流程:1.网上填写报名信息,并进入报名系统提交一封自荐信(3000字左右)2.下载基础测试,测试基础知识掌握情况。
(3天左右做完)3.根据基础测试结果,自学相应的技术视频4.需要写10篇技术blog、在黑马论坛与志同道合的朋友交流。
(积累技术分)5.技术储备好了,就可以参加入学考试了。
(一份试卷,一天内完成)6.预约老师,进行远程面试。
(面试时间30分钟以上,主要是技术性问题)自学课程:黑马程序员JavaEE+Android——开学前自学的Java课程(提供这些课程的视频下载)◇基础好:视频学习周期建议为5—10天,具体根据学生自学能力,自行合理安排时间。
第一阶段:Java基础(1-2天)●Java高级视频_IO输入与输出●Java高级视频_网络编程第二阶段:Java基础加强(3-4天)●2016年Java高新技术第三阶段:7k月薪面试题破解(2天)●交通灯管理系统视频●银行业务调度系统◇没有基础:视频学习周期建议为20-40天,具体根据学生自学能力,自行合理安排时间。
第一阶段:Java初级(8-15天)●Java开发前奏●Java编程基础●面向对象●多线程●JavaAPI第二阶段:Java基础(6-8天)●Java高级视频_IO输入与输出●图形用户界面GU●Java高级视频_网络编程第三阶段:Java基础加强(5-7天)●2016年Java高新技术第四阶段:7k月薪面试题破解(2-3天)●交通灯管理系统视频●银行业务调度系统上课时间安排:(实行指纹打卡,迟到10天以上劝退!)作息时间:早8:30——晚8:30早8:30——9:00 英语晨读时间,掌握软件开发常用词汇早9:00——12:00 上午上课时间12:00——14:00 午餐和午休时间14:00——17:00 下午上课时间17:00——18:00 晚餐时间18:00——20:30 晚自习时间课程设置:(四个月集训)第一阶段:Html+CSS+JavaScript基础第二阶段:JavaWEB+JavaMail开发技术+网上银行交易系统+网上在线支付第三阶段:Android核心基础第四阶段:Android高级+Git版本管理+linux+Webservice技术第五阶段:Android项目实战:手机卫士+321播放器+红孩子电子商城+植物大战僵尸+智能短信分类管理+豆瓣客户端+手机彩票等等第六阶段:就业面试与指导、现场招聘一个班级有7、8个讲师,其中3个主讲班型:大班70人左右上课形式:讲师一天讲5个小时左右,讲课过程中每敲一行代码,讲解一行代码;课下学员自己找时间练习。
黑马程序员培训
黑马程序员培训黑马程序员培训是一家专业的IT培训机构,致力于为学员提供高质量的编程技术教育和职业发展支持。
该机构拥有一支经验丰富、技术精湛的师资团队,结合实际项目经验和教学经验,通过系统化的课程体系和实践教学方法,帮助学员掌握各类编程语言和开发技术。
黑马程序员培训的课程包括但不限于Java、Python、前端开发、后端开发、移动应用开发等。
课程设置从基础知识到高级应用,不仅覆盖了当今热门的技术领域,还包含了实际项目开发中所需的关键技能。
学员可以根据自己的兴趣和职业规划选择相应的课程,以满足自己的学习需求和职业发展目标。
黑马程序员培训注重实战能力的培养,课程设置注重理论与实践的结合。
学员通过课堂学习掌握知识和技能,同时还将参与各类实际项目的练习和实践。
这样的教学模式,既能够加深学员对知识点的理解,又能够提高学员的动手能力和解决实际问题的能力。
黑马程序员培训还注重学员的创新和团队合作能力培养。
在课程过程中,学员将分组进行各种项目实践,通过团队合作解决实际问题。
这种培训方式能够激发学员的创新思维和合作精神,培养他们成为优秀的软件开发人才。
除了优秀的师资团队和实践教学模式,黑马程序员培训还提供多种就业支持和辅助服务。
学员在培训结束后,可以得到就业指导、简历制作、面试技巧培训等一系列支持,帮助他们顺利就业并在职场中取得成功。
黑马程序员培训在多年的发展中,已经帮助了无数学员实现了技术梦想和职业目标。
他们的毕业学员遍布各个知名公司和创业团队,其中不乏一线互联网公司的技术骨干。
这充分证明了黑马程序员培训的专业性和高效性。
综上所述,黑马程序员培训是一家以实战能力和就业导向为核心的IT培训机构,通过优质的课程和专业的服务,帮助学员实现技术突破和职业发展。
如果你对编程技术和IT行业感兴趣,不妨考虑参加黑马程序员培训,相信你定能在这里找到属于你自己的黑马之路。
张泽华android视频教程黑马程序员
软件与安卓系列源码,每套源码都已经经过测试,必须附加使用说明或帮助文档。
靠谱不坑爹!需要打包下载合集地址请的朋友,欢迎您与我交流QQ群:258450620 或QQ:50841662Android 源代码大约6000套,源代码数据大约8G,源代码视频教程大约40G部分源码下载地址:需要打包下载合集地址请的朋友欢迎您与我交流QQ:50841662源码下载地址展示:/50841662/2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@01_什么是3g.avi: /file/6622566402_android系统简介.avi: /file/6622571203_android的背景介绍.avi: /file/6622577104_android的framework简介.avi: /file/6622590205_两种虚拟机的比较.avi: /file/6622597705_两种虚拟机的比较.avi: /file/6622666606_sdk的下载&简介.avi: /file/6622685107_创建android模拟器.avi: /file/6622704108_ddms简介.avi: /file/6622722609_platform-tools简介&常见adb指令.avi: /file/6622761210_android项目的目录结构.avi: /file/6622864211_android下apk安装的过程.avi: /file/6622913212_常见adb指令介绍.avi: /file/6622932913_创建模拟器遇到的常见错误.avi: /file/6622962514_电话拨号器.avi: /file/6622979415_点击事件的4种写法.avi: /file/6622984616_短信发送器.avi: /file/6622989417_相对布局&单位简介.avi: /file/6623014618_线性布局&布局的组合.avi: /file/6623021519_表格布局&绝对布局.avi: /file/6623024020_帧布局.avi: /file/6623028121_测试相关概念.avi: /file/6623039822_android下junit测试框架配置.avi: /file/6623064823_logcat简介.avi: /file/6623069324_保存文件到手机内存.avi: /file/6623101525_android下文件访问的权限.avi: /file/6623111326_保存文件到SD卡.avi: /file/6623118927_分析setting源代码获取SD卡大小.avi: /file/6623130828_sharedPreference入门.avi: /file/6623554229_xml文件的序列化.avi: /file/6623577430_采用pull解析xml文件.avi: /file/6623658131_采用断点调试的方式观察pull解析的流程.avi: /file/6623659032_android下创建一个sqlite数据库.avi: /file/6623661333_sql语句实现数据库的增删改查.avi: /file/6623662434_系统api实现数据库的增删改查&sqlite3工具的使用.avi: /file/6623664436_listview入门.avi: /file/6623665337_采用layoutInflater打气筒创建一个view对象.avi: /file/6623666438_常用数据适配器ArrayAdapter.avi: /file/6623667139_常用数据适配器SimpleAdapter.avi: /file/6623668240_数据适配器总结.avi: /file/6623668341_内容提供者简介.avi: /file/6623669742_内容提供者的实现.avi: /file/6623681643_短信的备份.avi: /file/6623688644_插入一条记录到系统短信应用.avi: /file/6623824244_插入一条记录到系统短信应用.avi: /file/6623813145_内容观察者.avi: /file/6623871847_保存联系人到系统通讯录.avi: /file/6628494448_读取联系人的一个小细节.avi: /file/6628550349_网络图片查看器.avi: /file/6628608750_anr产生的原理&如何避免.avi: /file/6628620351_android消息机制入门.avi: /file/6634911951_android消息机制入门.avi: /file/6628632152_网络html查看器.avi: /file/6628638452_网络html查看器.avi: /file/6634941253_字符乱码问题的处理.avi: /file/6635006054_采用get方式提交数据到服务器.avi: /file/6635119755_采用post的方式提交数据.avi: /file/6635208656_提交数据到服务器中文乱码问题的处理.avi: /file/6635246657_采用httpclient提交数据到服务器.avi: /file/6635332558_异步http框架简介&实现原理.avi: /file/6635419259_异步http框架post提交数据到服务器.avi: /file/6635442060_上传文件到服务器.avi: /file/6635448861_smartimageview&常见开源代码.avi: /file/6635486862_多线程下载的原理.avi: /file/6635543063_多线程断点下载的原理.avi: /file/6635693764_多线程java代码移植到android.avi: /file/6635722965_多线程下载文本界面的更新.avi: /file/6635750166_显示意图激活另外一个activity.avi: /file/6640373967_隐式意图激活另外一个activity.avi: /file/6640419868_隐式意图的配置.avi: /file/6640513869_隐式意图和显示意图的使用场景.avi: /file/6640585970_在不同activity之间数据传递.avi: /file/66405938张泽华android视频教程黑马程序员(二).rar: /file/66349048张泽华android视频教程黑马程序员(二).rar: /file/66349055。
黑马程序员课程表
黑马程序员课程表黑马程序员是一家专注于IT技术培训的机构,提供多种课程供学员选择。
下面是一份黑马程序员的课程表,希望对大家了解该机构的培训内容有所帮助。
1. 基础课程1.1 编程入门课程:介绍编程的基本概念和常用编程语言,适合零基础学员。
1.2 数据结构与算法:学习数据结构和常用算法,提高编程能力。
1.3 网络基础:了解网络基本原理和常见网络协议。
1.4 数据库基础:学习数据库的基本概念和SQL语言。
2. 前端开发课程2.1 HTML/CSS:学习网页的基本结构和样式设计。
2.2 JavaScript:掌握JavaScript语言的基本语法和常用技巧。
2.3 Vue.js:学习Vue.js框架,构建动态网页和单页面应用。
3. 后端开发课程3.1 Java开发:学习Java语言和Java EE框架,开发企业级应用。
3.2 Python开发:掌握Python语言和Django框架,进行Web 开发和数据分析。
3.3 PHP开发:学习PHP语言和Laravel框架,构建动态网站。
4. 移动开发课程4.1 Android开发:学习Android应用开发和UI设计。
4.2 iOS开发:掌握iOS应用开发和Swift语言。
5. 数据科学与人工智能课程5.1 数据分析:学习数据清洗、可视化和建模等技术。
5.2 机器学习:掌握常用机器学习算法和工具,进行模型训练和预测。
5.3 深度学习:学习深度神经网络的原理和应用。
6. 运维与测试课程6.1 Linux运维:学习Linux系统管理和Shell脚本编程。
6.2 自动化测试:掌握自动化测试工具和技术,提高软件质量。
以上是黑马程序员提供的部分课程,根据个人需求和兴趣可以选择相应的课程进行学习。
黑马程序员致力于培养高素质的IT人才,帮助学员提升技术能力,实现个人职业发展目标。
无论是想要入门编程还是深入学习某个领域的专业人士,都可以在黑马程序员找到适合自己的培训课程。
通过系统的学习和实践,相信每个学员都能在IT行业中获得成功。
黑马程序员安卓教程:操作系统短信
操作系统短信使用内容提供者操作系统短信和操作系统联系人是我们企业开发中“经常”遇到的需求,而自定义内容提供者对外提供数据反而使用的场景并不多,除非我们开发的短信或者联系人应用。
1.3.1准备知识打开Android系统源码,查看packages\providers\路径下的工程,这些就是Android系统中的内容提供者,其中TelephonyProvider就是短信的内容提供者文件。
如图1-4所示,为本人的源码地址。
图1-4 Android系统自带内容提供者打开TelephonyProvider 下的src文件,查看java文件,其中的SmsProvider.java即短信息内容提供者逻辑代码。
UriMatcher一般在静态代码块中进行初始化操作,查找静态代码块,找到的逻辑代码如下:【文件1-7】代码片段1. private static final UriMatcher sURLMatcher=2. new UriMatcher(UriMatcher.NO_MATCH);3.4. static{5. sURLMatcher.addURI("sms",null, SMS_ALL);6.sURLMatcher.addURI("sms","#",SMS_ALL_ID);7. sURLMatcher.addURI("sms","inbox",SMS_INBOX);8. sURLMatcher.addURI("sms","inbox/#", SMS_INBOX_ID);159. sURLMatcher.addURI("sms","sent", SMS_SENT); 10. sURLMatcher.addURI("sms","sent/#",SMS_SENT_ID); 11. sURLMatcher.addURI("sms","draft",SMS_DRAFT); 12. sURLMatcher.addURI("sms","draft/#", SMS_DRAFT_ID); 13. sURLMatcher.addURI("sms","outbox",SMS_OUTBOX); 14. sURLMatcher.addURI("sms","outbox/#", SMS_OUTBOX_ID); 15. sURLMatcher.addURI("sms","undelivered",SMS_UNDELIVERED); 16. sURLMatcher.addURI("sms","failed",SMS_FAILED); 17. sURLMatcher.addURI("sms","failed/#", SMS_FAILED_ID); 18. sURLMatcher.addURI("sms","queued",SMS_QUEUED); 19. sURLMatcher.addURI("sms","conversations", SMS_CONVERSATIONS); 20. sURLMatcher.addURI("sms","conversations/*",SMS_CONVERSATIONS_ID); 21. sURLMatcher.addURI("sms","raw", SMS_RAW_MESSAGE);22. sURLMatcher.addURI("sms","attachments",SMS_ATTACHMENT);23. sURLMatcher.addURI("sms","attachments/#", SMS_ATTACHMENT_ID);24. sURLMatcher.addURI("sms","threadID", SMS_NEW_THREAD_ID);25. sURLMatcher.addURI("sms","threadID/*",SMS_QUERY_THREAD_ID);26. sURLMatcher.addURI("sms","status/#", SMS_STATUS_ID);27. sURLMatcher.addURI("sms","sr_pending",SMS_STATUS_PENDING);28.sURLMatcher.addURI("sms","icc", SMS_ALL_ICC); 29.sURLMatcher.addURI("sms","icc/#",SMS_ICC);31. sURLMatcher.addURI("sms","sim", SMS_ALL_ICC);32. sURLMatcher.addURI("sms","sim/#",SMS_ICC); 通过查找系统源码,可以确定短信息内容提供者的 Uri 应该为:”content://sms ”。
黑马程序员安卓教程:用户和文件资料权限
用户和文件权限所谓用户即在Android系统下每安装一个应用程序,系统就默认该APP为一个新的用户,也就是说你手机上的每一个APP都是一个用户。
文件的权限我们已经讲述过,那么接下来我们将论述用户与文件权限的关系。
在文件的权限中我们已经新建了4个不同权限的文件,分别为私有的,可读的,可写的,可追加的。
下面我们再新建一个用户(即新建一个项目),在该项目中访问上述新建文件的数据。
1.新建一个用户新建Android项目(other),使用系统自动生成的布局文件,运行程序如图1-1所示:图1-1所示上图表明另一个用户已经建成,接下来,我们就使用当前新建的这个用户来访问文件权限这一项目中生成的4个文件,并将读取的数据打印出来。
2.编写访问代码在新建项目(other)中读取另一个项目(文件权限)中的文件,编写访问代码如例1-2:例1-2 文件访问由上可以得出结论:一个用户访问另一个用户的私有文件是不被允许的,这个私有文件只能被自身用户所访问。
●访问另一用户(文件权限)的可读文件,即将例1-1中的private.dat改为:readable.dat,运行程序,LogCat打印出如图1-3所示的信息:11-26 03:36:09.653: I/System.out(22104): lisi##123图1-3所示由上可以得出结论:一个用户访问另一个用户的可读文件时,这个可读文件是可以被访问的。
●访问另一用户的可写文件,即将例1-1中的private.dat改为:writeable.dat,运行程序,LogCat打印如图1-4所示的信息:图1-4所示由上可以得出结论:一个用户读取另一个用户的可写文件是不被允许的,这个可写文件自能被自身程序所访问;但是当一个用户编辑另一个用户的可写文件,这个操作是被允许的。
●访问另一用户的可追加文件,即将例1-1中的private.dat改为:append.dat,运行程序,LogCat打印如图1-5所示的信息:11-26 03:51:28.213: W/System.err(26286):图1-5所示总结:两个用户之间文件的访问是受到限制的,能否访问成功取决于该文件的权限。
黑马程序员python600集讲义
黑马程序员Python600集讲义一、简介1.1 Python的重要性Python作为一种高级编程语言,具有简洁易读、功能强大、可扩展性强等特点,在互联网、人工智能、数据分析等领域得到了广泛的应用。
学习Python编程对于IT从业者和计算机专业学生来说具有非常重要的意义。
1.2 黑马程序员Python600集讲义概述黑马程序员是国内知名的IT培训机构,其推出的Python600集讲义是一套系统全面的Python学习教材,内容涵盖了Python基础语法、面向对象编程、GUI编程、网络编程、数据库操作、数据分析等方面,适合初学者和有一定编程基础的学习者使用。
二、课程内容2.1 Python基础语法在Python600集讲义中,详细介绍了Python的基础语法,包括变量、数据类型、运算符、条件语句、循环语句等内容。
通过理论与实践结合的方式,学习者能够快速掌握Python编程的基本知识。
2.2 面向对象编程面向对象编程是Python编程中非常重要的一个方面,在Python600集讲义中,对面向对象编程的原理、概念、继承、多态等内容进行了详细讲解,并提供了大量的实例演练,帮助学习者深入理解面向对象编程的精髓。
2.3 GUI编程Python的GUI编程是学习者比较关注的一个方面,Python600集讲义中涵盖了Tkinter、PyQt等GUI编程工具的使用方法,通过实例演练,学习者能够掌握如何使用Python开发各种图形界面应用程序。
2.4 网络编程网络编程是Python应用十分广泛的一个领域,Python600集讲义中对socket编程、HTTP协议、网络爬虫等内容进行了系统讲解,帮助学习者掌握Python在网络编程方面的应用技巧。
2.5 数据库操作Python与数据库的结合也是学习者关注的重点之一,Python600集讲义中介绍了Python对MySQL、MongoDB等数据库的操作方法,包括连接、查询、插入、更新、删除等操作,帮助学习者掌握Python 与数据库交互的技能。
黑马程序员安卓教程:操作系统联系人
操作系统联系人现在很多App都可以对系统联系人进行操作,比如微信就可以直接将号码添加到系统联系人中,比如QQ 可以关联/备份/恢复系统联系人。
1.4.1准备知识通过DDMS,查看Android模拟器下的/data/data/com.android.providers.contacts/databases/包下的数据库(如图1-6所示),查看其contact2.db数据库的内容。
18图1-6 联系人数据库位置将contacts2.db 打开,观察其数据库内容,表结构有很多,但是我们主要关注其中的三张表即可。
其中raw_contacts 表存放的是联系人id 信息,一个联系人就是表中的一行记录;data 表中存放的是raw_contacts中的每一条id对应的具体信息,一个联系人可能有电话、邮件、姓名等多条信息,每一条信息在该表中都是一行记录;为了区分不同信息的类型,因此还有一个mimetypes表,该表存储的是常量数据,不同类型的信息由mimetype_id来标识。
raw_contacts 表:data 表:mimetypes 表:打开Android源码,查看packages\providers\路径下的文件,其中ContactsProvider就是联系人的内容提供者。
1.打开清单文件,寻找联系人的内容提供者对应的是哪个java 文件。
【文件1-11】1. <provider android:name="ContactsProvider2"192. android:authorities="contacts;com.android.contacts"3. android:label="@string/provider_label"4. android:multiprocess="false"5. android:readPermission="android.permission.READ_CONTACTS"6. android:writePermission="android.permission.WRITE_CONTACTS">7. <path-permission8. android:pathPrefix="/search_suggest_query"9. android:readPermission="android.permission.GLOBAL_SEARCH" />10.<path-permission11.android:pathPrefix="/search_suggest_shortcut"12.android:readPermission="android.permission.GLOBAL_SEARCH" />13.<path-permission14.android:pathPattern="/contacts/.*/photo"15.android:readPermission="android.permission.GLOBAL_SEARCH" />16.<grant-uri-permission android:pathPattern=".*"/>17.</provider>从清单文件可以看出,内容提供者的类名为ContactsProvider2.java,必须使用前需要添加如下权限:android:readPermission="android.permission.READ_CONTACTS"android:writePermission="android.permission.WRITE_CONTACTS">2.打开ContactsProvider2.java 文件,查看此内容提供者的uri 路径信息matcher.addURI(ContactsContract.AUTHORITY, "contacts",CONTACTS);matcher.addURI(ContactsContract.AUTHORITY, "contacts/#", CONTACTS_ID);matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/data", CONTACTS_DATA);matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts",RAW_CONTACTS);matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#", RAW_CONTACTS_ID);matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/data", RAW_CONTACTS_DATA);3.根据源码,确定内容提供者的Uri 信息为:操作raw_contacts表的Uri:content://com.android.contacts/raw_contacts操作data表的Uri:content://com.android.contacts/data4.操作数据库表时注意事项由于contacts2.db数据库使用了视图,所以操作数据库表时,看到的表字段名称和真实操作的有所不同。
黑马程序员安卓教程:添加系统联系人
黑马程序员安卓教程:添加系统联系人通过内容提供者来读取系统联系人的操作我们已经讲述,那么如何向系统中写入一条联系人信息呢?实际上,读联系人操作与写联系人操作实质上是一样的,都是对表raw_contacts 和表data进行关联处理。
新加一条联系人数据时,首先需要在raw_contacts中插入该联系人的id;其次需要在data表中添加该联系人的具体联系方式以及该联系方式的类型。
下面我们通过一个案例来讲述联系人添加的过程。
1.新建工程【File】→【new】→【Android Application Project】命名为:06_添加一条联系人2.编写布局文件根据需求设计手机界面,效果如图1-1所示:图1-1所示图1-1对应的xml文件代码如下列1-1:例1-1 布局文件<LinearLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入联系人姓名" /><EditTextandroid:id="@+id/et_phone"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入联系人电话" /><EditTextandroid:id="@+id/et_email"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入联系人邮箱" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="save"android:text="提交数据" /></LinearLayout>3.编写业务方法当点击“提交数据“按钮时,则通过内容提供者向相关的表中添加联系人的联系信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统联系人现在很多App都可以对系统联系人进行操作,比如微信就可以直接将号码添加到系统联系人中,比如QQ 可以关联/备份/恢复系统联系人。
1.4.1准备知识通过DDMS,查看Android模拟器下的/data/data/com.android.providers.contacts/databases/包下的数据库(如图1-6所示),查看其contact2.db数据库的内容。
18图 1-6联系人数据库位置将 contacts2.db 打开,观察其数据库内容,表结构有很多,但是我们主要关注其中的三张表即可。
其中 raw_contacts 表存放的是联系人id 信息,一个联系人就是表中的一行记录;data 表中存放的是raw_contacts 中的每一条 id 对应的具体信息,一个联系人可能有电话、邮件、姓名等多条信息,每一条信息在该表中都是一行记录;为了区分不同信息的类型,因此还有一个 mimetypes 表,该表存储的是常量数据,不同类型的信息由 mimetype_id 来标识。
raw_contacts 表:data表:mimetypes 表:打开 Android 源码,查看 packages\providers\路径下的文件,其中 ContactsProvider 就是联系人的内容提供者。
1.打开清单文件,寻找联系人的内容提供者对应的是哪个 java 文件。
【文件 1-11】1. <provider android:name="ContactsProvider2"192. android:authorities="contacts;com.android.contacts"3. android:label="@string/provider_label"4. android:multiprocess="false"5. android:readPermission="android.permission.READ_CONTACTS"6. android:writePermission="android.permission.WRITE_CONTACTS">7. <path-permission8. android:pathPrefix="/search_suggest_query"9. android:readPermission="android.permission.GLOBAL_SEARCH" />10.<path-permission11.android:pathPrefix="/search_suggest_shortcut"12.android:readPermission="android.permission.GLOBAL_SEARCH" />13.<path-permission14.android:pathPattern="/contacts/.*/photo"15.android:readPermission="android.permission.GLOBAL_SEARCH" />16.<grant-uri-permission android:pathPattern=".*"/>17.</provider>从清单文件可以看出,内容提供者的类名为ContactsProvider2.java,必须使用前需要添加如下权限:android:readPermission="android.permission.READ_CONTACTS"android:writePermission="android.permission.WRITE_CONTACTS">2.打开ContactsProvider2.java 文件,查看此内容提供者的uri 路径信息matcher.addURI(ContactsContract.AUTHORITY, "contacts",CONTACTS);matcher.addURI(ContactsContract.AUTHORITY, "contacts/#", CONTACTS_ID);matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/data", CONTACTS_DATA);matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts",RAW_CONTACTS);matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#", RAW_CONTACTS_ID);matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/data", RAW_CONTACTS_DATA);3.根据源码,确定内容提供者的Uri 信息为:操作raw_contacts表的Uri:content://com.android.contacts/raw_contacts操作data表的Uri:content://com.android.contacts/data4.操作数据库表时注意事项由于contacts2.db数据库使用了视图,所以操作数据库表时,看到的表字段名称和真实操作的有所不同。
比如:data表在查询的时候没有mimetype_id字段,取代的是mimetype字段。
1.4.2查询系统联系人查询联系人步骤:1.读取raw_contacts表,获取全部联系人的id。
2.根据获取到的每一个id去查询data表中的数据。
3.将查询到的数据打印出来创建一个Android工程“04-操作系统联系人”,布局文件只有两个Button,点击时分别调用方法执行20查询系统联系人和插入系统联系人,因此布局文件不再给出。
添加权限:<uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/>查询系统联系人的核心方法如下所示:【文件1-12】MainActivity.java 代码片段1./**2.* 读取系统的所有联系人3.*/4.public void readContact(View view){5.//创建一个集合用于存储查询出来的额联系人6.List<User>users=new ArrayList<User>();7.//获取内容解析者8.ContentResolver contentResolver = getContentResolver();9.//使用联系人内容提供者的Uri10.Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");11.//从raw_contacts表中查询出所有联系人的id12.Cursor cursor= contentResolver.query(uri, new String[]{"contact_id" },13.null,null, null);14.while(cursor.moveToNext()) {15./**16.* 1. 先从 raw_contacts 表中获取 contact_id17.*/18.String contact_id = cursor.getString(0);19./**20.* 2. 根据 contact_id 从 data 表中查询具体的数据21.* 数据存储的字段名为data1,数据的类型为mimetype,因此只需要查询出这两个字段即可22.*/23.Cursor cursor2 =24.contentResolver.query(Uri.parse("content://com.android.contacts/data"),25.new String[]{ "data1","mimetype" },"contact_id=?",26.new String[]{ contact_id },null);er user =new User();28./**29.* 3. 遍历 cursor2,获取当前联系人的所有数据30.*/31.while(cursor2.moveToNext()) {32. // (1 )获取数据33. String data = cursor2.getString(0);34. //(2) 获取该数据的类型35. String mimetype = cursor2.getString(1);36. // 如果是姓名37. if ("vnd.android.cursor.item/name".equals(mimetype)) {38. = data;2139. //如果是电话号码40. }else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)){43. }else if ("vnd.android.cursor.item/email_v2".equals(mimetype)){46. }47. /**48. * 4. 将联系人添加到集合中 49. */50. users.add(user); 51. /**52. * 5. 关闭当前遍历数据的游标53. * 注意:不要关闭成遍历联系的了! 54. */55. cursor2.close();56. }57. //关闭遍历联系人的游标 58. cursor.close();59. //将所有联系人信息打印出来60. for(int i=0;i<users.size();i++){61. Log.d("tag", users.get(i).toString());62. } 63.64. }执行上面的代码后打印结果如图所示:(能打印该结果的前提是自己所使用的模拟器中得实现插入几条联系人数据)图 1-7 查询系统联系人结果1.4.3 插入系统联系人插入联系人步骤:1. 查询 raw_contacts 表中最大的 id ,假设为 n2. 往 raw_contacts 表中插入一个 id ,值为 n+1,作为一条新的记录3. 往 data1 表中插入具体的数据,其中 id 必须为 n+1。