首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AndroidContentProvider用法

Android,如果要将一个程序数据共享给另一个程序,之前Android版本,我们可以设置Android文件和SharedPreferences操作两个模式:MODE_WORLD_READABLE...首先,如果要访问一个应用程序通过ContentProvider共享数据,一定要借助ContentResolver类,我们可以通过Context类getContentResolver()方法获取ContentResolver...类对象, 之后,我们就可以通过ContentResolver类提供一些方法对数据进行 增加、更改、删除、查询 操作(和数据库4个操作类似)。...和数据库操作不同是,ContentResolver类这些操作都不是通过数据库表名进行,而是通过传入ContentProvider共享数据Uri(统一资源标识符,通过它可以找到任何文件所处位置)...ListView控件,这个方法 首先调用了ContentResolver类query方法并且传入储存联系人信息那张数据表Uri,用于查询联系人信息那张数据表数据,之后对查询返回结果Cursor

2K10

Android读取短信和联系人

短信 开始切入正题,先说短信,要从数据库获取数据,就要了解其结构 短信数据库data-->data下面路径 ?...获取联系人就比较复杂了,其表结构也比较复杂,我们获取联系人姓名、电话号码、邮箱,要通过3张表去提取 数据库所在位置data-->data下面路径 ?...raw_contacts表,我们通信录要显示信息必须要在这里找到对应ID,当我们删除了联系人,data表数据并没有删除,只是删除了证张表contact_id变为null,不是真的删除 ?..."/> 如过是Android 6.0以上版本还要动态获取权限 获取联系人效果图 ?...来获取_ID和DISPLAY_NAME * _ID 该联系人索引 * 通过这个ID可以ContactsContract.CommonDataKinds.Phone.CONTENT_URI

2.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

android学习笔记----SQLite数据库

/BankTransfer 官方更推荐Room不是SQLite:https://developer.android.google.cn/training/data-storage/room 用SQLite...sqlite是不支持删除列操作,所以网上 alter table [table_name] drop column [col_name] 这个语句sqlite是无效(这不是MySQL),而替代方法可以如下...> 当输入数据然后点击添加时候数据库会被创建(如果数据库还没被创建),数据会添加成功 我们可以把数据库导出到SQLite Expert去查看表内容,也可以直接在控制台查看一个大概,查看数据库和表有没有被创建...另一张contactinfo是我们MyDBOpenHelper创建。 接着可以用.schema命令查看它们建表语句。...selection:一个过滤器,声明要返回行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表所有行。     selectionArgs:您可以选择包括?

95120

【业界】Facebook对收集用户通话和短信数据言论作出了回应

浏览Facebook存储关于他联系人信息时,Dylan McKay发现了一些令人不安事情:Facebook也从他Android手机获得了大约两年通话元数据,其中包括姓名、电话号码以及每次通话时长...权限结构版本16Android API中进行了更改。...但是,如果Android应用程序写入早期版本API,则可以绕过此更改,因此Facebook API可以通过较早Android SDK继续访问通话和SMS数据。...Facebook为用户提供了一种清除其帐户收集联系人数据方式,但尚不清楚这是否会删除联系人或清除通话和SMS元数据。...虽然从技术上来说,数据收集是“可选择”,但在这两种情况下,选择“是”是Facebook应用程序默认安装模式,不是单独数据收集通知。

1.2K70

2-AIV--使用ContentProvider查询联系人

零、前言 [1].顾名思义,内容提供者,目的:实现跨进程间数据共享 [2].基于数据库提供数据 [3].如电话簿,短信,歌曲信息都是以数据库存储存储,都可以通过ContentProvider获取...[4].不太熟悉安卓运行时权限童鞋可以看一下我封装权限申请类: TI--安卓运行时权限完美封装 [5].如果只是想使用的人,直接把静态方法拷贝即可,想知道原理,图片和注释认真看一下,也可以自己分析一下联系人表...ContactBean { /** * 联系人姓名 */ public String name; /** * 联系人地址 */.../** * 获取联系人:ContactBean字段:name姓名 address地址 email邮箱 phone手机号 * * @param ctx 上下文...:这个比较耗时,要不要酌情处理,所以封装个方法,没有直接写在上面的方法 /** * 根据号码获得联系人头像 * * @param ctx 上下文

51610

ContentProvider初探

1.我们想在自己应用访问别的应用,或者说一些ContentProvider暴露给我们一些数据, 比如手机联系人,短信等!...这里给出如何获取URL与对应数据库表字段, 这里以最常用联系人为例,其他自行google~ ①来到系统源码文件下:all-src.rar -> TeleponeProvider -> AndroidManifest.xml...; resolver.insert(uri, conValues); } 注意事项: 上述代码4.4以下都可以实现写入短信功能,5.0上就无法写入,原因是: 从5.0开始,默认短信应用外软件不能以写入短信数据库形式发短信...cursor = resolver.query(uri, null, null, null, null); while(cursor.moveToNext()) { //获取联系人姓名...使用指南: 运行程序,晾一边,收到短信可以logcat上看到该条信息内容,可以根据自己需求 将Activtiy改做Service,而在后台做这种事情~ 小结 关于ContentProvider

49130

Android ContentProvider之联系人数据库及操作

具体哪些独立数据可以占一行,可以mimetypes这张表中找到, 原生Android系统 一共12种,例如name,phone,email ect.....大部分情况下这两层数据时指同一个联系人信息,即他们俩是一一对应关系,但是有些特殊 情况,这个我是查了一些老外论坛加上自己理解,例如 我做一个本地通信录和网络上通信录同步时候,可能有一个人他本地存在...“mimetype”是电话 或者 姓名 标示符编码: 例如:电话 对应“vnd.android.cursor.item/phone_v2” 姓名 对应“vnd.android.cursor.item/...Ø 联系人所有信息保存在列data1至data15,各列中保存内容根据MimeTypeID不同不同。...=null && cursor.getCount() > 0){ //从cursor取出我们需要联系人姓名和电话 while(cursor.moveToNext()){

83910

Android系统联系人全特效实现(上),分组导航和挤压动画

记得我刚接触Android时候对系统联系人特效很感兴趣,它会根据手机中联系人姓氏首字母进行分组,并在界面的最顶端始终显示一个当前分组。...如下图所示: 最让我感兴趣是,当一个分组和前一个分组相碰时,会产生一个上顶挤压动画。那个时候我思考了各种方法想去实现这种特效,可是限于功夫不到家,都未能成功。...,onCreate方法,我们从系统联系人数据库中去查询联系人姓名和排序键,之后将查询返回cursor直接传入AlphabetIndexer作为第一个参数。...然后我们setupContactsListView方法监听了ListView滚动,onScroll方法通过getSectionForPosition方法获取第一个可见元素分组值,然后给该分组值加...之后再通过ListViewgetChildAt(0)方法获取到界面上显示第一个子View,再用view.getBottom获取底部距离父窗口位置,对比分组布局高度来对顶部分组布局进行纵向偏移,

1.1K50

保存联系人到系统通讯录

对应着读联系人,把数据写进去,市场上社交类应用经常会有这样功能 向raw_contacts表添加一个id 向data表里面添加对应数据 获取ContentResolver对象,通过getContentResolver...()方法 调用ContentResolver对象query()方法,查询raw_contacts表,得到Cursor对象 调用Cursor对象moveToLast()方法,游标移动到最后一行 获取到最后一行记录...contact_id,新id就是它加上1 调用ContentResolver对象insert(uri,values)方法,参数:values是ContentValues对象把新id put()进去...获取到ContentResolver对象调用insert(uri,values)方法,参数:Uri应该是data表Uri规则,ContentValues对象,put(key,value),”raw_contact_id...”=>上面的id,”mimetype”=>”vnd.android.cursor.item/phone_v2”,”data1”=>”电话号码” 然后添加姓名,和上面一样只不过ContentValues

79630

数据结构项目实战——通讯录

接下来,函数会根据用户提供唯一标识符(如联系人ID或姓名通讯录数据库查找对应联系人记录。如果找不到匹配记录,函数会返回错误信息,告知用户联系人不存在。...这些数据可以存储文件、数据库或内存打印函数则需要从这些源读取数据,并将其转换为适合展示格式。 其次,打印函数还需要考虑如何呈现联系人信息。...,它负责将处理数据以安全、有效方式存储计算机系统硬盘或其他持久化存储介质。...通过使用枚举函数,我们可以清楚地定义这些数据取值范围,并在代码对每一种取值进行相应处理,从而有效地避免这类错误发生。 当然,枚举函数并不是万能。...在这种情况下,可能需要考虑使用其他数据结构或方法来进行处理。 总的来说,枚举函数是一种非常有用编程工具,它可以帮助我们更好地处理和管理具有固定、有限且明确值集合数据类型。

6710

Android读取手机通讯录联系人到自己项目

本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下 一、主界面代码如下: <LinearLayout xmlns:android="http://schemas.android.com...,使用了getContentResolver().query方法来查询系统联系人数据 //CONTENT_URI就是一个封装好Uri,是已经解析过得常量 cursor=getContentResolver...=null){ while (cursor.moveToNext()){ //获取联系人姓名 String displayName=cursor.getString(cursor.getColumnIndex...( ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME )); //获取联系人手机号 String number...开启权限 <uses-permission android:name="android.permission.READ_CONTACTS"/ 好了,下面运行一下,就可以读取出你手机里面的通讯录数据了

3.4K40

业界 | 谷歌版“剑桥分析事件”上演,华尔街日报发文谴责,谷歌长文回应

果然,谷歌“华尔街日报”报道发布几分钟,宣布了其Strobe项目安全审计结果。具体包括包括阻止一些第三方访问Android手机短信数据、通话记录以及一些联系方式。...我们认为,这个错误产生原因在于API与随后Google+代码更改产生相互作用。 我们设置Google+时考虑到了隐私权,因此将此API日志数据保留了两周。...展望未来,消费者将对他们选择与应用分享帐户数据进行更细致入微控制。应用程序必须在其对话框中一次一个地显示各个请求权限,不是单个屏幕查看所有请求权限。...例如,如果开发人员请求访问日历条目和驱动器文档,您将能够选择共享其中一项不是其他。...此外,作为 Android 联系人Android Contacts)权限机制一部分,我们此前提供了基本交互访问数据功能 —— 比如,一个短信应用可以获取并显示最近联系人记录。

1.1K50

【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio完成简易通讯录

用户使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。...图片 完成我们就可以通过链接方式,将自己代码分享给别人啦,这样对方就可以接着已经编好程序继续编写啦,相当方便。 综上,就是Cloud Studio基本操作步骤啦!...3.8 将联系人排序 这部分将排序信息并没有写入文件,但是可以通过选择保存联系人后,将排序好信息写入文件。...代码实现基本思路是定义一个通讯录类,然后通过列表进行增删改查和排序等操作,并且可以将通讯录内容保存到文件代码实现上,对于用户输入数据进行了简单校验,保证了数据有效性和安全性。...今天我受到一个大佬启发,我完全可以平板上编辑程序呀,省着拿着电脑了,原来平板上用是python编辑器(是一个软件),体验并不是很好,只要一切换软件,程序就停止运行(已经允许它后台了)。

39320

Android查缺补漏--ContentProvider使用

ContentProvider (内容提供者)是一种共享型组件,可以为系统内应用于与应用之间提供访问接口。...ContentResolver 比如,当应用A想把自己数据暴露出来让别的应用也可以操作的话,就可以应用A内部创建一个ContentProvider实现相关方法并添加URI,然后在其他应用(应用B)就可以通过...1、查询系统联系人 通过系统联系人Uri获取系统联系人及手机号码: public void query() { showContact = ""; // 获取联系人Cursor集合...values); Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_LONG).show(); query(); } 输入框输入联系人姓名...最后想说是,本系列文章为博主对Android知识进行再次梳理,查缺补漏学习过程,一方面是对自己遗忘东西加以复习重新掌握,另一方面相信重新学习过程定会有巨大新收获,如果你也有跟我同样想法,

70800

C语言实现简易手机通讯录,自学C语言小项目!

wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1] 一、通讯录 通讯录可以用来存储1000个人信息,每个人信息包括:姓名、电话。...选择0-7范围内时,使用转移表调用函数。...void init(AddressBook* addressbook) { addressbook->size = 0; } 123 六、新增联系人 首先,判断通讯录是不是满了,满了给出提示,没满让用户输入联系人姓名和电话...\n"); addressbook->size++; } 123456789101112131415 七、查找联系人 采用按照姓名查找电话号码方法。用户输入姓名查找,输出编号、姓名和电话。...\n"); } 123456789101112131415161718 九、修改联系人 用户输入联系人编号来进行修改,更改下标为 id 元素。用户重新输入姓名和电话,输出更新成功。

1.6K2218

android经常使用电话操作

给大家分享一下我一个Android工具类,能够获取手机里面的各种信息,包含拨打电话。 获取全部联系人姓名及电话,插入联系人姓名及电话,插入联系人姓名及电话。插入通话记录。获取用户全部短信。...Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + number)); context.startActivity(intent); } /* * 获取全部联系人姓名及电话..._ID)); // 获取联系人ID号,SQLite数据库ID Cursor phone = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI...return; ContentResolver cr = context.getContentResolver(); // 首先向RawContacts.CONTENT_URI运行一个空值插入,目的是获取系统返回...RawContacts.ACCOUNT_TYPE, null) .withValue(RawContacts.ACCOUNT_NAME, null).build()); // 插入当前编号人姓名

52510

iOS 通讯录相关序一、介绍二、弹出系统通讯录程序三、代理方法四、不需要弹出联系人控制器就可以获取联系人信息方法五、iOS 9 新出点击通讯录获取信息办法

---- 一、介绍 1.iOS,有2个框架可以访问用户通讯录: AddressBookUI.framework 提供了联系人列表界面、联系人详情界面、添加联系人界面等 一般用于选择联系人 AddressBook.framework...通过ABAddressBookSave函数保存刚才所作修改 可以通过ABAddressBookHasUnsavedChanges函数判断是否有未保存修改 当决定是否更改通讯录数据库,你可以分别使用...设置联系人图片数据 ---- 2.第二个代理方法,选中联系人某个属性(详细信息,如电话号码)时候调用,注意和上面的方法只能实现一个,如同时实现无法跳转到联系人详情页面,优先上面的方法方法可以获取具体哪个电话号码...,点击右上角cancel时候触发,不是picker所有dismiss动作中都会触发。..., 就可以选择多个联系人,该方法点击done按钮时触发,注意:该方法不受predicateForSelectionOfContact属性影响!

1.7K60
领券