Android官方开发文档Training系列课程中文版:与其它APP交互之从Activity获得结果

原文地址:http://android.xsoftlab.net/training/basics/intents/result.html

启动其它Activity并不是单方向的。你也可以启动其它Activity然后接收返回结果。如果要接收结果,应该调用startActivityForResult()而不是startActivity()。

举个例子,APP可以启动拍照APP然后接收捕捉到的图像作为结果。或者,你可能会启动一个People APP让用户选择一个联系人,然后接收联系人的详细信息作为返回结果。

当前,响应的activity必须要被设计为可以返回结果。当这样被设计了,它会发送另一个Intent对象作为结果。你的Activity会在onActivityResult()回调方法中接收到它。

Note:当你在调用startActivityForResult()方法的时候可以使用显式或者隐式的意图。当启动你自己的Activity接收结果时,你应该使用显式意图来确保你可以接收到期望的结果。

启动Activity

当在启动Activity的时候并没有特别指明Intent对象的结果,但是你还是需要传一个附加整型值给startActivityForResult()方法。

这个整型的参数被称为”request code”,它用来指明你的请求。当你接收到Intent的结果时,回调方法会提供相同的请求码,以便于APP可以适当的确认结果并决定怎么处理它。

举个例子,这里展示了如何启动一个activity,并且允许用户选择一个联系人:

static final int PICK_CONTACT_REQUEST = 1;  // The request code
...
private void pickContact() {Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbersstartActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}

接收结果

当用户操作完成并返回的时候,系统会调用activity的onActivityResult()方法,这个方法包含了三个参数:

  • 使用startActivityForResult()方法时传递的请求码
  • 第二个activity指定的结果码,这里可能是RESULT_OK,如果操作完成的话,要不然就是RESULT_CANCELED,如果用户返回了,或者因为别的原因失败了
  • 一个携带了结果的Intent对象

这里展示了如何处理”选择联系人”意图的返回结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {// Check which request we're responding toif (requestCode == PICK_CONTACT_REQUEST) {// Make sure the request was successfulif (resultCode == RESULT_OK) {// The user picked a contact.// The Intent's data Uri identifies which contact was selected.// Do something with the contact here (bigger example below)}}
}

在这个例子中,结果Intent返回了Android中的联系人或者其它People APP提供的Uri内容。

为了可以正确的处理结果,你必须得懂得Intent结果的格式。如果返回结果的Activity结果是你自己Activity的话那非常轻松。Android平台包含的APP提供了它们自己的API,这些API可以让你依靠指定的结果数据。举个例子,People APP(一些老版本上的联系人APP)总是会返回一个URI内容形式的结果。这个URI指明了选择的联系人,Camera APP会返回一个Bitmap对象,这个对象附加在”data”上。

额外奖励

上面的代码展示了如何获取联系人结果,但是没有详细的解释如何从结果中读取数据,因为这需要有关content providers的更进一步的讨论。然而,如果你特别好奇,这里有一些代码展示了如何从结果中查询数据,从而在选择的联系人中获得电话号码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {// Check which request it is that we're responding toif (requestCode == PICK_CONTACT_REQUEST) {// Make sure the request was successfulif (resultCode == RESULT_OK) {// Get the URI that points to the selected contactUri contactUri = data.getData();// We only need the NUMBER column, because there will be only one row in the resultString[] projection = {Phone.NUMBER};// Perform the query on the contact to get the NUMBER column// We don't need a selection or sort order (there's only one result for the given URI)// CAUTION: The query() method should be called from a separate thread to avoid blocking// your app's UI thread. (For simplicity of the sample, this code doesn't do that.)// Consider using CursorLoader to perform the query.Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null);cursor.moveToFirst();// Retrieve the phone number from the NUMBER columnint column = cursor.getColumnIndex(Phone.NUMBER);String number = cursor.getString(column);// Do something with the phone number...}}
}

Note:在Android 2.3 (API level 9)之前,在Contacts Provider执行查询需要APP声明READ_CONTACTS权限。然而,从Android 2.3开始,当选择的结果返回时Contacts/People APP授予了APP一个临时权限来从Contacts Provider读取信息。这个临时的权限值适用于请求的指定联系人,所以不能够查询其它联系人信息,除非你声明了READ_CONTACTS权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Challenger 2018:细粒度用户评论情感分析冠军思路总结

2018年8月-12月,由美团点评、创新工场、搜狗、美图联合主办的“AI Challenger 2018全球AI挑战赛”历经三个多月的激烈角逐,冠军团队从来自全球81个国家、1000多所大学和公司的过万支参赛团队中脱颖而出。其中“后厂村静静”团队-由毕业于北京大学的程惠阁…

基于PaddleRec的用户点击率预测

基于PaddleRec的用户点击率预测 一、前言推荐系统的痛点 二、推荐系统的数据获取获取数据的三种方法1.使用现成的数据集2.网络爬虫3.调查问卷 三、数据处理PaddleRec推荐数据集格式1.slot:value的格式说明2.只有value的输入数据格式 四、完成点击率预测的具体实现1.首先安装P…

论文浅尝 | 融入知识的弱监督预训练语言模型

论文笔记整理:叶群,浙江大学计算机学院,知识图谱、NLP方向。会议:ICLR 2020链接:https://arxiv.org/pdf/1912.09637.pdf Abstract预训练语言模型不仅在传统的语言学任务上取得了很好的表现,在一些涉及到背景…

2021 年 1 月程序员薪资出炉,持续上涨!你过平均线了吗?

瑟瑟发抖!程序员薪资报告又来了。2021 年 1 月的薪资报告一定能给你个大惊喜!程序员薪资扶摇直上。(2021年1月程序员收入情况)1 月全国程序员平均工资 14915 元,工资中位数 12500 元,其中 96% 的人工资介于…

LeetCode 590. N叉树的后序遍历(后序遍历)

文章目录1. 题目2. 解题2.1 递归2.2 循环1. 题目 2. 解题 2.1 递归 class Solution { public:vector<int> postorder(Node* root) {vector<int> ans;postRec(root, ans);return ans;}void postRec(Node* root, vector<int> &ans){if (root NULL)return…

人物志 | MIT 科技创新“远见者”:美团 NLP 负责人王仲远

2019 年 1 月 21 日&#xff0c;《麻省理工科技评论》发布了 2018 年“35 岁以下科技创新 35 人”&#xff08;35 Innovators Under 35&#xff09;中国榜单&#xff0c;美团点评AI平台部 NLP 中心负责人、点评搜索智能中心负责人王仲远获评为“远见者”。 Innovators Under 35…

Android官方开发文档Training系列课程中文版:与其它APP交互之允许其它APP启动你的Activity

原文地址&#xff1a;http://android.xsoftlab.net/training/basics/intents/filters.html 在前两节课程中我们只关注了事情的一面&#xff1a;从你的APP启动其它APP。但是如果你的APP可以执行一些功能&#xff0c;并且这些功能可以被其它APP所利用&#xff0c;那么你可以做一…

论文浅尝 | GraphSAINT—基于图采样的归纳学习方法

论文笔记整理&#xff1a;杨海宏&#xff0c;浙江大学博士生&#xff0c;研究方向为开放世界下的多语言知识问答。1. 简介受显存的因素限制&#xff0c;应用图神经网络于大规模图学习任务上面临“邻居爆炸&#xff08;Neighbor Explosion&#xff09;”问题&#xff0c;导致网络…

LeetCode 105. 已知前序中序 求二叉树

文章目录1. 题目2. 解题1. 题目 类似POJ 2255 Tree Recovery 2. 解题 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {unordered_map<int,int> m;//哈希表for(int i 0; i < inorder.size(); i) {…

李在福羽毛球教学

2020年11月27日更 工作的业余之时一定要记得好好健身哦&#xff0c;争取做个健康小达人很行动上的小巨人。不困于时间、不困于地点、不困于等等。没有借口哦&#xff0c;投资自己的身体也是未来很重要的一部分噶。 1 握拍&#xff1a;大拇指和四个手指头握紧&#xff0c;可以更…

不讲武德,只用标签名就能做文本分类

文 | 谁动了我的炼丹炉编 | 兔子酱今天给大家介绍一篇微软研究院在EMNLP2020上发表的论文&#xff0c;主题是弱监督文本分类。看到标题的你可能会和我刚开始一样震惊&#xff0c;只是知道标签名怎么给文本分类呢&#xff1f;是的&#xff0c;虽然听起来不可思议&#xff0c;但看…

Android官方开发文档Training系列课程中文版:分享简单数据之发送简单数据给其它APP

原文地址&#xff1a;http://android.xsoftlab.net/training/building-content-sharing.html 引言 Android应用程序有一项伟大的事情就是它们有可以与其它应用程序交流及整合。为什么不重新使用已经存在于其它APP中的非核心功能呢&#xff1f; 这节课覆盖了一些共同的方式&a…

美团点评技术年货:一本覆盖各技术领域、1200+页的电子书

春节已近&#xff0c;年味渐浓。 又到了我们献上技术年货的时候。 不久前&#xff0c;我们已经给大家分享了技术沙龙大套餐&#xff0c;汇集了过去一年我们线上线下技术沙龙99位讲师&#xff0c;85个演讲&#xff0c;70小时分享。 今天出场的&#xff0c;同样重磅——技术博客2…

论文浅尝 | 基于文本关联的知识图谱的无监督嵌入增强

来源&#xff1a;IJCAI2019论文链接&#xff1a; https://www.ijcai.org/proceedings/2019/0725.pdf概述知识图谱嵌入是从多关系数据中提取数据的工具&#xff0c;最近的嵌入模型对从现有数据库中推断新事实具有很高的效率。然而&#xff0c;这种精确结构的数据通常在数量和范围…

ICLR2021 Oral |9行代码提高少样本学习泛化能力

文 | 杨朔知乎本文已获作者授权&#xff0c;禁止二次转载介绍一篇我们刚刚发表在ICLR2021 Oral上的一篇少样本学习工作&#xff0c;简单有效。题目&#xff1a;Free Lunch for Few-shot Learning: Distribution Calibration链接&#xff1a;https://openreview.net/forum?idJW…

Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据

原文地址&#xff1a;http://android.xsoftlab.net/training/sharing/receive.html 正如你的程序可以发送数据给其它程序&#xff0c;那么你也可以轻松的接收数据。想象一下用户如何与你的程序交互&#xff0c;以及你想从其它应用程序接收的数据类型。举个例子&#xff0c;一个…

腾讯-视频打标签算法探讨

腾讯-视频打标签算法探讨&#xff1a;https://cloud.tencent.com/developer/article/1191746

LeetCode 106. 已知中序后序 求二叉树

文章目录1. 题目2. 解题2.1 递归2.2 循环1. 题目 类似题目LeetCode 105. 已知前序&中序 求二叉树 2. 解题 2.1 递归 递归法&#xff0c;后序最后一个是根节点 class Solution { public:TreeNode* buildTree(vector<int>& inorder, vector<int>& p…

React Native工程中TSLint静态检查工具的探索之路

背景 建立的代码规范没人遵守&#xff0c;项目中遍地风格迥异的代码&#xff0c;你会不会抓狂&#xff1f; 通过测试用例的程序还会出现Bug&#xff0c;而原因仅仅是自己犯下的低级错误&#xff0c;你会不会抓狂&#xff1f; 某种代码写法存在问题导致崩溃时&#xff0c;只能全…