字段规则 消息的字段可以⽤下⾯⼏种规则来修饰: singular :消息中可以包含该字段零次或⼀次(不超过⼀次)。 proto3 语法中,字段默认使⽤该规则。...编写通讯录demo 新增/读取联系人并进行序列化 对通讯录序列化有三点: 读取本地已存在的联系人文件(不存在则创建该文件) #define FILE_SAVE "contacts.bin"// 文件保存的文件名...,由于PB序列化之后是二进制文件,所以从文件中读取数据使用ios::binary,读取成功之后,通过contacts.pb.h中提供的解析二进制序列方法,将通讯录数据序列化为二进制文件,并保存在 contacts.bin...向通讯录中添加一个联系人 // 联系人信息类型为PeopleInfo类型 void AddPeopleInfo(contacts2::PeopleInfo* people) { cout contacts.contacts(i); cout 联系人姓名: " people.name() << endl; cout 联系人年龄:
// 对一个联系人的信息使用 PB 进行序列化,并将结果答应出来 contacts::PeopleInfo people; people.set_name("张三"); people.set_age...people.SerializeToString(&msg)) { std::cerr 联系人失败!"...contacts::PeopleInfo people_result; if(!...people_result.ParseFromString(msg)) { std::cerr 联系人失败!"...people_result.age() << std::endl; return 0; } 然后我们进行编译,因为使用了protobuf,而protobuf实际上使用了C++11的新特性:
---- 新智元报道 来源:blog.google,TechCrunch,The Wall Street Journal ,techxplore 编辑:三石 【新智元导读】谷歌宣布即日起定期封停...Project Strobe:保护用户数据、改进第三方API以及定期废止Google+ 谷歌Project Strobe声明 问题发现1:创建和维护符合消费者期望的Google+产品存在重大挑战。...解决方案4:我们限制了应用程序在Android设备上接收通话记录和短信权限,不再通过Android Contacts API提供联系人交互数据。...此外,作为Android Contacts权限的一部分,谷歌提供了基本的交互数据 - 例如,消息应用可以向用户显示最近的联系人。...在未来几个月内将删除对Android Contacts API的联系人互动数据的访问权限。
据悉,这个BUG的本质是Google+ People API允许用户访问自己和朋友的个人资料数据,这无意中也允许第三方应用程序删除未被标记为公开的个人资料,包括姓名、电子邮件地址、职业和性别等。...需要强调的是,作为我们Project Strobe审核的一部分,我们在其中一个Google+ People API中发现了一个错误: 用户可以通过API向Google+应用授予对其个人资料数据及其朋友的公开个人资料信息访问权限...措施 4:我们会对应用程序获取 Android 设备上通话记录和短信记录的权限做一些限制,并且不再允许通过 Android Contacts API 获取到通话交互数据。...此外,作为 Android 联系人(Android Contacts)权限机制的一部分,我们此前提供了基本的交互访问数据功能 —— 比如,一个短信应用可以获取并显示最近的联系人记录。...未来几个月内,我们将会从 Android Contacts API 中移除这个对通话记录数据的访问权限。
目标组件一般要通过Intent来声明自己的条件,一般通过组件中的元素来过滤。.../people/1 显示id为1的联系人信息 ACTION_DIAL content://contacts/people/1 将id为1的联系人电话号码显示在拨号界面中 ACITON_VIEW...tel:123 显示电话为123的联系人信息 ACTION_VIEW http://www.google.com 在浏览器中浏览该网站 ACTION_VIEW file://sdcard...如果你们有疑问或新的intent内容,希望交流。...(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title"); startActivity(it); 21.调用系统编辑添加联系人
2.2 保留字段 reserved 如果通过 删除 或 注释掉 字段来更新消息类型,未来的⽤⼾在添加新字段时,有可能会使⽤以前已经存在,但已经被删除或注释掉的字段编号。...service ⽬录下新增contacts.proto(通讯录 3.0) syntax = "proto3"; package s_contacts; //联系人 message PeopleInfo...c_contacts; //联系人 message PeopleInfo{ string name = 1; //姓名 int32 age = 2; //年龄 message...为了叙述方便,把增加了“生日”属性的 service称为“新模块”;未做变动的client称为 “老模块”。 向前兼容:老模块能够正确识别新模块生成或发出的协议。...向后兼容:新模块也能够正确识别老模块生成或发出的协议。
因此,Android 提供了一些新的 API 来使用 SQLite 数据库,Android 开发中,程序员需要学使用这些 API。...Raw Queries 正如 API 名字,rawQuery() 是最简单的解决方法。通过这个方法你就可以调用 SQL SELECT 语句。...以下是一些示例URI: content://media/internal/images 这个URI将返回设备上存储的所有图片 content://contacts/people/ 这个URI将返回设备上的所有联系人信息...content://contacts/people/45 这个URI返回单个结果(联系人信息中ID为45的联系人记录) 尽管这种查询字符串格式很常见,但是它看起来还是有点令人迷惑。...因此,如上面content://contacts/people/45这个URI就可以写成如下形式: Uri person = ContentUris.withAppendedId(People.CONTENT_URI
联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.microsoft.com...Web API CRUD 方法说明 Action说明 HTTP方法 URI关连 取得所有联系人清单 GET /api/contacts 透过 id 取得联系人数据 GET /api/contacts/id...新增一位联系人 POST /api/contacts 更新联系人数据 PUT /api/contacts/id 删除联系人数据 DELETE /api/contacts/id 由上表中,我们可以很清楚看到...,有两种资源类型( resource types): URI 资源类型 URI 说明 /api/contacts 列出所有联系人 /api/contacts/id 一位联系人 HTTP 方法 HTTP...在联系人管理中提供了二个 Action,一个是读取所有联系人,一个是通过 id 来取得联系人。这两个 Action 都定义在 HTTP GET 方法,记得方法必须以 "Get..." 开头。
利用HttpClient调用Web API 创建一个“联系人管理器”应用 一、构建解决方案 Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板,...我们接下来调用HttpClient的PostAsJsonAsync方法向目标地址“http://localhost/selfhost/api/contacts”发送一个POST请求以添加一个新的联系人...contacts和contact分别通过调用方法observableArray和observable创建,所以它们均支持双向绑定。...我们通过指定的联系人对象是否具有Id来判断当前操作是“修改”还是“添加”。对于后者,我们会创建一个新的对象作为添加的联系人对象。被修改或者添加的联系人对象被“赋值”给contact属性。...对话框的弹出通过调用表示对话框的的modal方法实现,该方法是由Bootstrap提供的。 save:发送Ajax请求调用Web API以添加新的联系人或者修改现有某个联系人的信息。
Data属性接受一个Uri对象,一个Uri 对象通常通过如下形式的字符串来表示: content://com.android.contacts/contacts/1tel:123 Uri字符串总满足如下格式...FLAG_ACTIVITY_NEW_TASK:默认的启动旗标,该旗标控制重新创建一个新的 Activity。...(Contacts.People.CONTENT_URI); startActivity(intent); 17....查看指定联系人 查看指定联系人,其核心代码如下: Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);...(People.CONTENT_ITEM_TYPE); intent.putExtra(Contacts.Intents.Insert.NAME, "My Name"); intent.putExtra
看了dudu的《HttpClient + ASP.NET Web API, WCF之外的另一个选择》一文,想起多很久之前体现ASP.NET Web API而创建的一个Demo。...[源代码从这里下载] 目录 一、一个简单的基于CRUD 二、通过ASP.NET Web API提供服务 三、通过JQuery消费服务 一、一个简单的基于CRUD...当页面加载的时候,所有的联系人列表被列出来。在同一个页面中,我们可以添加一个新的联系人,也可以修改和删除现有联系人信息。整个应用唯一的页面在浏览器中的呈现效果如下图所示。 ?...二、通过ASP.NET Web API提供服务 我们来简单介绍作为Web API形式发布的联系人管理服务的定义,先来看看用于表示联系人的Contact类型的定义。.../contact”和“/api/contact/001”得到所有联系人列表和ID为“001”的联系人信息。
最终只找到了google的搜索引擎api,其他的初来乍到实在不知道如何进行获取 以后如果获取到了我就去试一试吧 query query允许我们使用sql语句对数据库进行查询 不过现在我们还没有查询什么,...包括侦察、发现、导入、攻击、报告五大功能模块 侦查模块 主要分为以下这些方面,这个命名方式和maltego很像,是由 aaa 得出bbb companies-contacts 公司得到联系人 companies-multi...公司到综合信息 contacts-contacts 联系人到联系人 contacts-credentials 联系人到凭证信息 contacts-domains 联系人到域名 contacts-profiles...联系人到注册配置文件 credentials-credentials 凭证到凭证 domains-contacts 域名到联系人 domains-credentials...公司 – 联系人 这项是不行了,我们没有那几个api 公司 – 综合信息 ?
2.5.5 相关API接口 尽管在Android SDK里能够看到部分AppOps的API接口,但是Google对此解释的很清楚: This API is not generally intended...即是说,这些API不是让第三方app使用的,而是供系统应用调用的。 使用Android SDK开发应用,如果要调用这些API的话,也会编译不通过。...用户只有通过不断学习,充分理解新加入的权限说明,才能在安装软件时从Android权限警告中获取足够的信息,从而做出正确的决定。...比如:相机CAMERA、联系人CONTACTS、存储设备STORAGE。...(这里可能比较绕,举个例子:假设你的APP需要联系人和拍照权限,在请求权限时用户只授予了联系人权限,那么当前程序可以正常运行并获取联系人信息,但是无法进行拍照) 注:本篇文章讲解如何在API level
联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.microsoft.com...:port/api/contacts?...$orderby=Name $skip 跳过前 n 笔元素 http://localhost:port/api/contacts?...$skip=2 $top 传回前 n 笔元素 http://localhost:port/api/contacts?...例如,以下的 URI 会回传前 3 笔联系人数据,而且使用 name 排序过。 http://localhost:port/api/contacts?
这样的框架,并使用Selenium进行应用程序UI测试 --而现在希望在相同的框架中也包含API测试 --可能需要快速设置数据或断言等,那么接下来就让我们看看如何在本文中完成。...检查API url的header部分 ? F12 开发者工具 本地部署的地址 https://localhost:4200/api/contacts?...首先,我在模板下面创建。...TestRailName") .with("location", "Winterfell"); template.render(model);//用上述的值替换模板表达式中的值 接下来可以发送POST请求创建新的联系人了...假设页面最多只能显示50个联系人,你需要点击翻页按钮查看更多联系人,但是在本地/QA环境中,当你启动一个新的应用程序时,可能没有足够的联系人来测试该显示功能;如果页面对象公开了一个方法来添加联系人,则需要调用
这里给出如何获取URL与对应的数据库表的字段, 这里以最常用的联系人为例,其他自行google~ ①来到系统源码文件下:all-src.rar -> TeleponeProvider -> AndroidManifest.xml...查找对应API ②打开模拟器的file exploer/data/data/com.android.providers.contacts/databases/contact2.db 导出后使用SQLite...3)简单的读取手机联系人 核心代码: private void getContacts(){ //①查询raw_contacts表获得联系人的id ContentResolver resolver...:" + name); } cursor.close(); } 5)添加一个新的联系人 private void AddContact() throws RemoteException...接下来,创建一个新的项目,我们来实现ContentResolver的部分,我们直接通过按钮点击插入一条数据: MainActivity.java public class MainActivity extends
通常,在使用并非由自身创建的信息资源、执行会影响设备或其他应用行为的操作时,应用都需要获得相应的权限。例如,如果应用需要访问互联网、使用设备摄像头或者打开或关闭 WLAN,应用需要获得相应的权限。...如果应用请求另一应用执行任务或提供信息,则不需要获得相应权限。例如,如果您的应用需要读取用户的地址簿,则需要 READ_CONTACTS 权限。...例如,如果用户启动一个摄影应用,用户对应用要求使用相机的权限可能不会感到吃惊,但用户可能无法理解为什么此应用想要访问用户的位置或联系人。在请求权限之前,不妨为用户提供一个解释。...例如,如果您请求 READ_CONTACTS 权限,系统对话框只显示您的应用需要访问设备的联系人。用户只需要为每个权限组授予一次权限。...您的代码不应依赖特定权限属于或不属于相同组这种假设。 例如,假设您在应用清单中列出了 READ_CONTACTS 和 WRITE_CONTACTS。
而在 /api/contacts/:id 端口,我们通过特殊的 id 字段检索数组并获得对应的对象。为了简单起见,我们只是使用模拟数据。在真实的应用中,这些数据是从服务器返回的。...创建 Actions 接下来,我们创建 actions 检索从 API 获取的联系人数据。...当 RECIEVE_CONTACTS action 被派发的时候,意味着我们正在从 API 获取联系人数据,而且我们想将联系人数据转成数组。...创建 Contacts 组件 Contacts 组件将用于在侧边栏中展示联系人列表。我们将在列表中设置 Link 链接,稍后详细说明。...然而,JWT 认证是无状态的,它的工作原理是通过服务器去检查请求中的 token 令牌是否与密钥匹配。没有会话或也没有必要的状态。