,要了解的是这是内容提供者(contentProvider)的知识点,大家都知道数据库是在data-->data 对应的包目录下,其他应用是不可以访问到的,如果有些数据要提供给其他的应用,比如通信录,其他应用想获取它的数据怎么办呢...短信 开始切入正题,先说短信,要从数据库中获取数据,就要了解其结构 短信数据库在data-->data中的下面路径 ?...raw_contacts表,我们通信录中要显示的信息必须要在这里找到对应的ID,当我们删除了联系人,data表中的数据并没有删除,只是删除了证张表contact_id变为null,而不是真的删除 ?...真正应用 通常不会这样直接写它的路径的,因为手机厂商会修改它的路径,还是这样写的话会报错,说不存在这一列,需要使用Android提供的API /** * 通过ContactsContract.Contacts.CONTENT_URI...中找到该联系人的电话号码 * 通过这个ID可以在ContactsContract.CommonDataKinds.Email.CONTENT_URI 找到该联系人的邮箱
ContentResolver 比如,当应用A想把自己数据暴露出来让别的应用也可以操作的话,就可以在应用A内部创建一个ContentProvider实现相关方法并添加URI,然后在其他应用中(应用B)就可以通过...ContentResolver和URI来访问应用A中的ContentProvider了。...创建好了,接下来要做的就是使用ContentResolver来访问它了。...,在Activity中使用ContentResolver,通过URI来访问上面的(不同应用中)ContentProvider。...二、调用系统的ContentProvider 除了我们自己创建ContentProvider,Android系统也给我们提供了丰富的ContentProvider接口,这里就以操作系统的联系人为例来说明一下怎使用系统提供的
本文实例为大家分享了Android实现手机联系人读取和插入的具体代码,供大家参考,具体内容如下 目标效果: ? ?...先在模拟器随便添加两个联系人,运行程序,再打开联系人,发现多了联系人“张三”,并且日志输出了三给安溪人的姓名和手机号码还有号码类型。...DISPLAY_NAME")); Log.i("MainActivity","_ID "+id); Log.i("MainActivity","DISPLAY_NAME "+name); /*根据id查询联系人的电话号码...,所以在AndroidMainfest.xml页面中的Permissions栏目里进行添加。...4.程序运行就可以显示目标效果了。 以上就是本文的全部内容,希望对大家的学习有所帮助。
本文实例讲述了Android编程操作手机通讯录的方法。分享给大家供大家参考,具体如下: 手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息。...类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子。同样的这次也会使用到内容提供者的知识。 1. 要操作通信录就要得到授权,也就是读或者写通讯录的权力。这里也需要使用Junit <?...buf=new StringBuffer(); //实例化一个可变字符串StringBuffer //取得联系人id,每个条目都有一个唯一的id(主键) String contactId..._ID)); //取得联系人的显示名称 String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME...)); buf.append("id:"+contactId).append(",name:"+name); //取得联系人的号码 Cursor phone=resol.query
在Android中,如果要将一个程序的数据共享给另一个程序,在之前的Android版本,我们可以设置Android文件和SharedPreferences操作的两个模式:MODE_WORLD_READABLE...,一个ListView用于显示联系人的信息。...(R.menu.main, menu); return true; } } MainActivity.java主要做一件事:自定义一个方showContacts() 用于获取联系人信息并且显示在...ListView控件中,这个方法中 首先调用了ContentResolver类的query方法并且传入储存联系人信息那张数据表的Uri,用于查询联系人信息那张数据表的数据,之后对查询的返回结果Cursor...单击“显示电话簿”按钮: ? 在这里,如果你用的是模拟器,并且模拟器中没有联系人的话要添加几个联系人。不然就显示的是空界面。
在我们开发一些如短消息、应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在应用商店上加上可以升级的应用数量,这样不占太大空间还能达到提示的目的。...> 先来获取手机内通讯录的图标,如果没有获取到,则使用该应用的图标....Rect dst=new Rect(0, 0, iconSize, iconSize); canvas.drawBitmap(icon, src, dst, iconPaint); //在图片上创建一个覆盖的联系人个数...要想使用Notification,我们必须获取一个Service–NotificationManager,Android中由它来管理我们的Notification,获取NotificationManager...这里说的都是应用内、状态通知等一些显示处理后图片的办法,那么有没有方法处理手机主屏幕上的图标的办法,为他们加上数字呢。
1.我们想在自己的应用中访问别的应用,或者说一些ContentProvider暴露给我们的一些数据, 比如手机联系人,短信等!...使用系统提供的ContentProvider 其实很多时候我们用到ContentProvider并不是自己暴露自己的数据,更多的时候通过 ContentResolver来读取其他应用的信息,最常用的莫过于读取系统...接下来我们就来一步步实现: 在开始之前我们先要创建一个数据库创建类: DBOpenHelper.java public class DBOpenHelper extends SQLiteOpenHelper...接下来,创建一个新的项目,我们来实现ContentResolver的部分,我们直接通过按钮点击插入一条数据: MainActivity.java public class MainActivity extends...使用指南: 运行程序后,晾一边,收到短信后,可以在logcat上看到该条信息的内容,可以根据自己的需求 将Activtiy改做Service,而在后台做这种事情~ 小结 关于ContentProvider
通过ContentResolver 获取到手机的联系人跟手机短信信息并显示出来,供大家参考,具体内容如下 1、实现的代码: package com.example.phone; import java.text.SimpleDateFormat...String,Object (); for(int i= 0;i<con.size();i++){ text.setText(item.put("con", con.get(i))+"");//仅显示一条...System.out.println("ningshengcai:"+item.put("con", con.get(i)));//打印显示全部数据 } break; default...得到ContentResolver对象 ContentResolver cr = getContentResolver(); //取得电话本中开始一项的光标 Cursor cursor...,希望对大家的学习有所帮助。
上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。...因为是一个工具类,所以我这里就只给一个方法了,也是很简单,但是写的没有读取联系人的数据那么多,要保存更多其实看下如何读取的就会了。...ContactEntity contact) { try { ContentValues values = new ContentValues(); // 下面的操作会根据RawContacts表中已有的...rawContactId使用情况自动生成新联系人的rawContactId Uri rawContactUri = context.getContentResolver().insert( RawContacts.CONTENT_URI..., values); } catch (Exception e) { return false; } return true; } 以上就是本文的全部内容,希望对大家的学习有所帮助。
Android 的SMS读取短信,可以获取发信人/收信人的手机号码(address),Contacts的联系人,可以过滤手机号码(address),因此SMS可以通过手机号码(address)关联到...Contacts联系人 SMS - Contacts 关联代码 // 通过address手机号关联Contacts联系人的显示名字 private String getPeopleNameFromPerson...getSmsInPhone", ex.getMessage()); } return smsBuilder.toString(); } // 通过address手机号关联Contacts联系人的显示名字...strPerson = strPeopleName; } cursor.close(); return strPerson; } } AndroidManifest.xml 权限 记得在AndroidManifest.xml...示例代码 参考推荐: Android 之 Contacts 联系人读取
这里使用的是虚拟机,实际中需要外网能访问的服务器,这样手机应用才能正常连接到服务器。 ? readinfo.php <?...我们在最上面的输入框中输入时间,点击“设置时间”按钮,会在下面显示到计时的时间。如下图所示 ? 当我们点击“开始计时”按钮时,应用开始倒计时,如下图所示: ?...在使用此应用时,我们并未发现什么异常情况,现在我们把视角切换到ubuntu服务器上,这个时候就会发现newfile.txt中多出了一些内容,然后我们访问readinfo.php,就可以看到手机上的联系人信息...、审查应用程序使用的权限 ?...2、审查应用程序使用的进程间通信机制 ? 这里我们只发现了一个调用主Activity的机制,本步检查安全。 3、分析源码中开放的端口、共享/传输的数据,以及网络连接 ?
--- 内容提供器的用法一般有两种, 一种是使用现有的内容提供器来读取和操作相应程序中的数据, 另一种是创建自己的内容提供器给我们程序的数据提供外部访问接口。...有没有似曾相识的感觉?没错,SQLiteDatabase中也是使用这几个方法来进行CRUD操作的,只不过它们在方法参数上稍微有一些区别。...,毕竟这 是在访问其他程序中的数据,没必要构建过于复杂的查询语句。...update()应用 ? delete()应用 ? 2.读取联系人 下面运用上面所学的知识,看看如何读取系统电话簿中的联系人信息。...现在在模拟器中手动添加几个联系人,以便稍后进行读取: ? 可以看到一开始电话簿里是没有任何联系人的,下面进行创建: ? ? ?
给大家分享一下我的一个Android工具类,能够获取手机里面的各种信息,包含拨打电话。 获取全部联系人姓名及电话,插入联系人姓名及电话,插入联系人姓名及电话。插入通话记录。获取用户全部短信。...; import android.provider.ContactsContract.RawContacts; import android.provider.ContactsContract.RawContacts.Data..._ID)); // 获取联系人的ID号,在SQLite中的数据库ID Cursor phone = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI...)); // 手机号码字段联系人可能不止一个 resultList.add(new ContactsInfo(name, strPhoneNumber)); } } return..., values); } /* * 批量插入联系人姓名及电话 */ public static void insertContactsList(List
,即使用Xamarin.Forms获取和展示Android和iOS的通讯录信息,下面是最终效果,由于使用的是真实手机,所以联系人姓名及电话号码打码显示。...二、代码实现 1、共享库工程创建联系人实体类:Contacts.cs namespace TerminalMACS.Clients.App.Models { /// ///...cancelToken.HasValue) cancelToken = CancellationToken.None; // 我们创建了一个十进制的TaskCompletionSource...工程中的Info.plist文件添加通讯录权限使用说明 5、在Android工程中添加读取通讯录权限配置:AndroidManifest.xml <uses-permission android:name...if (PermissionUtil.VerifyPermissions(grantResults)) { // 已授予所有必需的权限,显示联系人片段。
Content组件中能够用到的场合,基本上是APP想要使用系统的手机通讯数据,比如查看联系人/短信/彩信/通话记录,以及对这些通讯信息进行增删改。...在查看通讯信息中的具体运用: 读取联系人 代码示例如下: private static Uri mContactUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI...前面说过,ContentResolver可以由客户端用来给服务端添加数据,不过有时候某种数据在服务端对应的是多张表,比如说联系人信息在服务端实际有联系人姓名表、联系人电话表(因为有家庭电话、工作电话之分...下面是两种监听方式在监听短信接收中的具体运用,监听结果消息使用了Notification推送到消息栏,有关Notification的使用说明参见《Android开发笔记(五十二)通知推送Notification...总结下在Content组件中使用过程中遇到的几个Uri常量: 联系人信息(不包含手机号与电子邮箱): ContactsContract.Contacts.CONTENT_URI content
,使用了getContentResolver().query方法来查询系统的联系人的数据 //CONTENT_URI就是一个封装好的Uri,是已经解析过得常量 cursor=getContentResolver...( ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME )); //获取联系人手机号 String number...; //把取出的两类数据进行拼接,中间加换行符,然后添加到listview中 contactsList.add(displayName+"\n"+number); }...没有权限",Toast.LENGTH_SHORT).show(); } break; default: break; } } } 三、由于读取通讯录属于危险权限,所以记得在Manifest...以上就是本文的全部内容,希望对大家的学习有所帮助。
: TI--安卓运行时权限完美封装 [5].如果只是想使用的人,直接把静态方法拷贝即可,想知道原理的,图片和注释认真看一下,也可以自己分析一下联系人的表。...下,根据contact_id查询data表字段, 然后判断mimetype的值,新建实体类,将数据设置到实体中, 将实体放入实体集合,查完返回集合。...联系人数据库 ? 联系人.png 我们关注的时三张表: 1.raw_contacts 关注一个字段contact_id ?...:这个比较耗时,要不要酌情处理,所以封装个方法,没有直接写在上面的方法中 /** * 根据号码获得联系人头像 * * @param ctx 上下文...// 打开头像图片的InputStream InputStream input = ContactsContract.Contacts.openContactPhotoInputStream
本文实例为大家分享了Android实现访问联系人的具体代码,供大家参考,具体内容如下 要求: 编写程序,使用ContentProvider实现访问联系人 ContentProvider类的作用: ContentProvider...(内容提供器)是所有应用程序之间数据存储和检索的一个桥梁,其作用是是各个应用程序之间能共享数据;主要功能是存储、检索数据并向应用程序提供访问数据的接口。...插入:使用ContentResolver.insert()方法向ContentProvide中增加一个新的记录时,需要先将新纪录的数据封装到ContentValues对象中,然后调用ContentResolver.insert...更新:使用ContentResolver.update()方法实现记录的更新操作。...: <uses-permission android:name="android.permission.READ_CONTACTS" / (4)实现效果: 在联系人中添加几个联系人: 运行程序,手机里的所有联系人的
: // Step1:查询联系人的id: URI为PhoneLookup.CONTENT_FILTER_URI // Step2:查询ContactsContract.Contacts.CONTENT_URI...+ 加上上面得到id, 构建好Uri之后调用ContactsContract.Contacts.openContactPhotoInputStream得到图片的流....; } /** * 通过联系人的ID,查询联系人的头像 * * @param ctx * @param contactId * @return 返回 bitmap 头像, 如果此联系人没有头像的话...* cookie 是startQuery 方法中的第二个参数 * cursor 查询后的结果 */ protected void onQueryComplete(int token,...& cookie instanceof CursorAdapter){ CursorAdapter adapter = (CursorAdapter) cookie; // 给adapter 设置新的
看到这个名称的时候最能给我们提供信息的应该是“跨程序”这个词了,是的重点就是这个词,这个内容提供器的作用主要是用于在不同的引用程序之间实现数据共享的功能,它提供了一完整的机制,允许一个程序访问另一个程序中的数据...,同时还能保证被访问的数据的安全性,在目前使用内容提供器是Android实现跨程序共享数据的标准方式。..., 另一部分是path,path则是相对于同一应用程序中的表走区分的,通常都是添加在authority的后面。...我们读取一下联系人 ---- 我们这里写一个小demo,来读取一下联系人的信息,然后把它展示在一个ListView当中,具体的代码如下: public class ContactsActivity...---- 前面也说过,要是想实现跨程序之间的共享数据的功能,官方推荐的就是使用内容提供器,我们可以新建一个类去继承ContentProvider的方式来创建一个自己的内容提供器。
领取专属 10元无门槛券
手把手带您无忧上云