Android组件序列—-Intent详解

</intent-filter>   

第二章、芒格的生活、学习和裁定方法

自定义序列: 在Intent添加序列可以加上两个档次,这就要求被匹配的机件必须同时满意这五个序列,才能配合成功。操作Activity的时候,倘诺没有项目,须加上默认序列

那么接下去就不多废话,直接上干货。

1         Intent intent = new Intent(Intent.ACTION_VIEW);
2         Uri uri = Uri.parse("file:///storage/sdcard0/平凡之路.mp3"); ////路径也可以写成:"/storage/sdcard0/平凡之路.mp3"
3         intent.setDataAndType(uri, "audio/mp3"); //方法:Intent android.content.Intent.setDataAndType(Uri data, String type)
4         startActivity(intent);

二、普世智慧

1、怎么样有效学习?

1)、跨学科学习

查理(Charles)的过人之处在于,他在很早的时候提议来的见识,放在立刻的环境中,仍旧有着光辉的点拨意义和影响力。1998年四月24日,查尔斯(Charles)在复旦法高校的解说(具体内容见书中第四章,第五讲《专业人员需要更多的跨学科技能》)中涉嫌一个定义——跨学科。

在这篇演说中,查理(Charles)向我们来得了一个直接以来,很多教育都忽略的意见:跨学科学习。查尔斯说:“重大题材往往牵涉到许多课程。如若要获取最佳的结果,咱们必须学习大量的跨学科知识,持久地操纵可以利用自如的所有必要技术。同时养成核对“检查清单”(即我复盘),逆向思考等习惯。”

不可否认,至今我们的引导在跨学科学习这一面还是是存在着很大的弱点。人人都在说综合素质教育,可真的可以提议解决方案的却并不多。怎样引进和塑造传授那种看法的辅导我们,怎么着进展跨学科知识的上学和利用,应该是立即启蒙所要思考的问题之一。说到底,教育不单是助教知识,更首要的要教会人们肿么办人,怎么样独立思想,怎么样更大限度的缓解问题。

2)、终身,持续性学习

“我手里只要有一本书,就不会觉得浪费时间。”那是Charles的原话。他在其余时候都会随身辅导一本书,虽然是坐在经济舱的中间座位上,只要拿着书,就无所谓。

实际上,这是一条很重大的普世真理,在此外环境下都是适用的。假诺没有终身学习,那么人们将不会拿走很高的形成。咱们已经都认为学生生涯截止就足以毫不再读书,现在再看,这是何其愚蠢的想法。

读完这一片段,最大的开导便是:成套人生都将是大家的就学之路,这条路不会停下来,如若强行终止,那么在截至的这须臾间我们就曾经拉开了死亡倒计时。

Charles.芒格在阅读

2、咋样拥有快乐?

“快乐”应该是立即每个人都在追求的东西,而这些追求的旅程注定充满劳累。其实在许多时候,快乐与否,不是看我们富有了多少金钱,名誉或者地点。而是看我们是否具备一颗富足的心。在《穷查尔斯宝典》一书中,恰恰告诉了大家怎么滋养出一颗充盈的心里,进而从容地面对苦难重重的活着。我总括了一下,共有以下几点:

1)、防止邪恶的人和物

生活和工作上多数的打响来源于于了解怎么事是应有制止的:过早死亡、糟糕的婚姻等。看到这一条,不禁又令人回想从前涉嫌过的逆向思维。要想博得幸福和成功,重要应当做的,就是防止邪恶之人。

2)、知足已经拥有的

人们通常喜欢和四周的人去相比较,什么人什么人何人比自己赚的多,什么人什么人何人职位比自己高。可这并不是一件好事。是没有必要的,大家需要做的就是和昨日的亲善相比较。可道理即便易懂,但形成的人总不是太多。

3)、提防妒忌

这一条可以接上一条举办领悟。其实毁灭人类的不是名缰利锁,而是妒忌。这是性情中最本质的事物。妒忌生贪婪,而贪婪会引发更多的倒行逆施,从而导致一密密麻麻很不好的结果。

4)、持续性学习,争取天天都比前一天聪明一点

5)、找到一个好的配偶

另一半对本身的震慑是很大的,可怎么着可以拥有美观的配偶呢?在明天以此剩男剩女泛滥的时代,这么些问题的答案其实并从未大家想像中的那么复杂。查尔斯已经告知了咱们,这就是“想要找到最佳配偶,首先得值得所有好伴侣。”也就是说,自己要先变得不错起来。

(注:不婚主义者此意见可创造看待)

6)、慈善

此处的“慈善”指的是,大家得以遵照自己的情事,量力而行,做一些善行。用爱去救助旁人,时间久了就会深感到很幸福,快乐也会光顾。

7)、制止欠债

Charles在这一眼光里指出:“人一旦走进负债的怪圈,就很难走出来。千万别欠信用卡的钱。”

先天信用卡借款等各样借贷格局不以为奇,那个的产出,刺激和引起了人人提前消费的一言一行。其实这是一个很糟糕的习惯,就算在花费的那一刻很有快感,但连续带来的压力也会让你所剩无几的喜悦消失殆尽,进而走入愁苦的牢笼。

8)、培育独立思考的能力

巴菲特是这般评价查尔斯.芒格的:“一位从不人云亦云、本身持有极强逻辑推演能力的同步人。”其实,独立思考是一个很重点的力量。由于人的心境状态,总是倾向于趋近于社会认同。从我们小的时候起初,就期盼拿到导师、家长、朋友的认可和热爱。那是一种健康心思。但是,
并非一味的,失去原则的去趋同,而是对于一件事情要有友好的剖析和判断能力。否则,在容易受到周遭环境的熏陶之下,人们频繁会错过自我
,而找不到人生的大方向。

9)、信任

这一条目的在于报告我们,人与人里面的往来。信任是关键的底子,既然接纳了和对方接触,那么快要去相信对方,同时做好可以经受对方会背叛的准备。因为我们要有力量为投机的精选负责。

10)、对事物保有好奇心和兴趣

大家每个人都应有具有对于事物保有好奇心的力量。并在那些过程当中不断的去发现异样的点,培育新的兴趣爱好。这在很大程度上会丰硕我们的生活,
甚至会成为我们人生的紧要关头。

1         button1.setOnClickListener(new OnClickListener() {            
2             @Override
3             public void onClick(View v) {
4                 //启动另一个Activity,(通过action属性进行查找)
5                 Intent intent = new Intent("com.example.smyh006intent01.MY_ACTION");//方法: android.content.Intent.Intent(String action)                
6                 startActivity(intent);        
7             }
8         });

一、投资技巧

实际上,查尔斯说她并不曾什么特定的投资技巧,他只是发现了那么多少个好的火候而已。但固然环境再怎么暴发变化,我们也仍能够从这之中汇总出有些最少在如今截止看来,依然是真理的办法。

1、投资评估过程

查尔斯(Charles)告诉我们,在投资往日,首先要肯定能力限制,假若没有真的弄明白“能力圈”在哪些范围,那么将会是一件很凶险的政工。

其次要引人注目竞争优势(内部+外部),一个商家的竞争优势是该公司的“护城河”。持有这种看法的查尔斯谨慎的权衡这么些长时间围困大多数店铺的“竞争性毁灭”力量。所以她和巴菲特总在努力分辨而且只购得那个有很大机遇克制这一个围攻力量的合作社。

同时,还相应保障独立思想的力量,寻找安全边际。用探讨事物本质的千姿百态,跨学科、多领域去塑造自己的视角。

最后,众所周知价值与价格。价格是你付出的,价值是您获取的。所有聪明的投资都是价值投资——得到比你付出更多的事物。你必须先评估一个铺面的市值,然后才能评估它股票的市值。

2、投资原则检查清单

1)、风险——所有投资评估应该从测量风险起始

A、测算合适的平安边际

B、防止和道德质地有题目的人打交道

C、坚定不移为约定的风险要求适当的补给

D、永远铭记在心通货膨胀和利率的高风险

E、避免犯下大错;防止资本金持续亏损

2)、独立——“只有在童话中,太岁才会被告知自己没穿服装”

A、客观和理性的姿态需要单独思想

B、对错不是在于旁人,而是你的剖析和判断是否科学

C、随大流只会接近平均值

3)、准备——“唯一赢球方法是干活,工作,工作,并希望保有一点洞察力”

A、广泛阅读,保持好奇心,终身学习

B、领悟各学科思维模型

C、不断问“为什么?”

4)、谦虚——认同自己的愚昧是小聪明的始发

A、在显眼限定的力量圈内工作

B、辨认和稽核否定性证据

C、抵制追求虚假的高精度和谬误的家喻户晓欲望

D、别愚弄自己

5)、严刻分析——使用科学方法和管事的反省清单可知最大限度的回落不当和忽略

A、区分价值和价格、过程和行进、财富和局面

B、记住浅显好明白的

C、考虑总体的风险和功用,关注地下二阶效应和更高层次的震慑

D、总是反过来想

6)、配置——正确的安排基金是投资者最首要的工作

A、最好的用处总是由第二好用的用途衡量出来的

B、看准时机,合理配置资源,量力而行

7)、耐心——战胜人类天生爱行动的偏爱

A、复利

B、避免多余的交易和摩擦成本

C、幸运降临时保障清醒头脑

D、享受结果,也享受过程, 因为你活在经过中

8)、决心——当适用的机会出现时,要始终不渝地采用行动:外人贪婪时,要害怕;旁人害怕时,要贪婪。

9)、改变——在生活中要学会改变和经受不能排除的复杂性

A、认识和适应身边世界的真实性面目

B、不断挑衅和积极修正“最爱的价值观”

C、正视现实,固然你并不欣赏它

10)、专注——别把工作搞复杂,记住您原来要做的事

A、声誉和不俗是您最有价值的财产

B、制止妄自尊大和厌倦无聊的心绪

C、别因为过分关心细节二忽略由此可见的事物

D、排除不需要信息

E、直面大题目,别把它们藏起来

11)、诚实是最好的国策

3、投资提出

综观全书,我从查理(Charles).芒格依照自己集团出发所做的总结,对所有经济、政治、文化、教育等大环境中存在问题的剖析和批评,以及在各大高等学府的发言种,归咎提炼出了其对于投资的部分建议,有刹那间几点:

1)、保守主义

Charles说:“我们将会在避免不创制的高风险和负债的前提下,努力使它保持合理的增长率。现在成千上万人犹如觉得公司高管的权责就是让股票价格上涨。这种观点导致了五光十色愚蠢的作为。我们会实话实说。”

2)、收购政策(分析准确,看准时机)

A、不停地寻找收购的机会

B、收购后,留下有激情的原集团创办人

C、兼并后合力

D、做出正确的情欲决定

3)、保险业务:用很低的成本让浮存金以高度的速度提升

4)、回购股票:分开集团股票以创办出更多的流动性

5)、性格、耐心和求知欲的首要

查理(Charles)分析:大多数人总是不禁,或者连续担心过头。成功表示你要万分有耐心,然则又能在该拔取行动时攻击。同时必须要持有深切的志趣去弄精晓正在发生的事情背后的确的原故。

6)、集中投资(等待机会,并努力抓住)

查尔斯分析:当好项目出现时,大家不可能无法认出来,因为好项目不会平日出现。机会只会关切有准备的人。

7)、用廉价的标价,甚至是有理的价位,来选购这个拥有可不断竞争优势的商号

Beta周到、现代重组投资理论在查理(Charles)看来都不要紧道理。他以为股价波动是衡量风险的尺码那种观点是谣言。

8)、看准优质而伟大的商家进展长时间投资

优质而伟大的店家一般来说相比稳定,也值得倚重。同时长时间投资,收缩交易效用能节省下来不少开支。(这其间还有一个很重大的概念,即复利。)

9)、小投资者的火候

能够考虑买入很小的股票,寻找一些偶发的不当定价的空子。

10)、保持持续性的竞争优势

11)、持续性学习

12)、能力圈及边界

在这一意见中,查理(Charles)认为:“人们需要找出一块优良的能力领域,然后把精力放进去。假若一个人确实有能力,就会这多少个通晓自己的力量圈边界在什么地方。没有界限的能力不可以称之为能力。”所以,在成人历程中,大家应该善于利用SWOT模型,阶段性复盘自己,判断自己的优劣势及力量圈范围,这将会对我们处理问题起到理想的帮助功效。

13)、资本成本和机会成本

查尔斯谈到:“资本并不是免费的。关键是要考虑各个基金,包括机会成本。可倘使有人说收获100%的成本回报率,就不应有去投资某个发生80%回报率的品种,这简直就是疯话。”

14)、财富效应和道义效应

查理(Charles)认为,黑金(贪污),股价被非理性的哄抬,是很让人恶心的“财富效应”。同时,他提议“贪婪地接过不客观手续费的赌场;分明不合适养老基金插足的天价艺术品市场一样的庞氏骗局;终将破裂并且给宏观经济造成恶果的心心相印泡沫。”这二种状态可能会给各个社会文明制度带来巨大的毁坏。

于是他指示世人,应当用道德举办自己约束,时刻警惕自己。

15)、改正资金的投资业绩

A、指数化投资

B、然而多的举行贸易:投资要长期、要专一,不间接举行海外投资

C、非杠杆式投资:对创立初期的高科技集团进行投资;利用财务杠杆对此外铺面开展并购;依照相对价值对股票进行杠杆式投资、杠杆式趋同交易,以及对各种债券和衍生品的惊愕交易策略(不指出使用)。

图形发自简书APP

具体的实现为:

率先章、Charles.芒格传略

第6行:”file://”表示查找文件,前面再增长自身的HUAWEI手机存储卡的路线:/storage/sdcard0,再添加具体歌曲的路子。

该书概括了查理(Charles).芒格独特的投资技巧,普世真理,生活态度,心境知识等一层层充分的木本。不光告诉我们怎么着致富,更关键的是报告我们什么样收获文化与智慧,找到属于自己的人生方向,以及如何愉悦、有效的去生活。思维方法之独到新颖,不觉令人有恍然大悟之感,是一本值得反复去阅读的力作。

 1         button1.setOnClickListener(new OnClickListener() {            
 2             @Override
 3             public void onClick(View v) {
 4                 //启动另一个Activity,(通过action属性进行查找)
 5                 Intent intent = new Intent();
 6                 //设置动作(实际action属性就是一个字符串标记而已)
 7                 intent.setAction("com.example.smyh006intent01.MY_ACTION"); //方法:Intent android.content.Intent.setAction(String action)
 8                 intent.addCategory("com.example.smyh006intent01.MY_CATEGORY");
 9                 startActivity(intent);        
10             }
11         });

《穷查理(Charles)宝典》是美利哥小说家彼得.考夫曼所著的关于“查理(Charles).芒格”的灵性箴言录。全书共分为五大章节,分别为:

 

三、思维模式

1、多元思维模型(约100种)

查尔斯.芒格认为,任何事物之间都是存在着联系的,人们可以从不同的科目角度去分析和判断。其中包括:历史、心理、生理、数学、工程、生物、物理、化学、总括、经济等。只要取得正确的收集和团队,这些多元思想模型便能提供一个背景或者框架,使她具备看清生活本质和目标的别致洞察力。而这么些互相加重并极大地加大互相效应的元素,被查理(Charles)称之为“LOLLAPALOOZA效应”。

在这一局部中,查尔斯为我们列举了多少个最要害的模型,分别为:

1)、工程学,冗余备份模型、质量控制理论、断裂点理论。

2)、数学,复利模型、排列组合原理、决策树理论。

3)、物文学和化学,临界点模型、倾覆力矩、自我催化模型。

4)、生物学,现代达尔文(Darwin)综合模型。

5)、总括学,高斯分布。

6)、心情学,认知误判模型、“5W理论”、双轨分析。

在读的长河当中,越到末代越能发现这种多样思维模型的周全性。这对大家着想分析问题是这多少个有救助的。多角度思考,多角度分析,多方案比对,既锻练了俺们的逻辑思维能力,同时还进步通晓决问题的频率和准确性。平时生活和做事中,当多应用。

2、逆向思维(勇于推翻原有思想格局和对事物的体会)

这一考虑方法,在整部书中查理多次指出,可见其利害攸关。德国的一位资深的科学家雅各比曾经这样说道:“反过来想,总是反过来想。”大家都知道,在数学那门课程当中,会用到很多逆推的算法,其实那点在生存当中,同样适用。

Charles在她的演讲中涉嫌如此一位存在于故事中的乡下人,这一个乡下人说:“若是知道我会死在哪个地方就好啊,这我将永久不去特别地方。”这听起来也许很荒谬,但恰恰表明对于复杂适应系统以及人类大脑而言,即使拔取逆向思考,问题屡屡会更易于解决。假如人们把问题反过来思考,常常就可知想的更为了然。

本人了然这一条也亟需人们在生活、工作和上学当中反复的去行使,这势必会经历一些充足困难的随时,但这诚然是一个很好用的点子,倘使错过,或许我们将会比使用这一个主意的人多走许多弯路也恐怕。

图形发自简书APP

若果Activity1需要和Activity2举办联系,二者不需要一贯关系,而是经过Intent作为桥梁。通俗来讲,Intnet类似于中介、媒婆的角色。

咋样可以喜欢的得利、学习、生活,应该是当下大家各类人都想要知道的答案。我们总是在相连地查找,不断地犯错,不断地向上,可仍旧不得要领。但是真正有一本书,蕴含着这一宝藏。这本书就是《穷查尔斯宝典》。所以今天自我将把书中具有的主题内容做一个梳理(附思维导图),希望每一个坚韧不拔看完的读者朋友,能获取一些启发或答案。

链接:http://pan.baidu.com/s/1sjFdfvn

第四章、查尔斯(Charles)十一讲

Action
和category平日是位于一块儿用的,所以那边一起介绍一下。大家来先来举一个事例:

查理.芒格(左)和沃伦.巴菲特(右)

  <category
android:name=”android.intent.category.DEFAULT”></category> 

其三章、芒格主义:查尔斯的即席讲话

综合,完整版代码如下:

第五章、随笔、报道与评论

 

查尔斯(Charles).芒格是沃伦(沃伦(Warren)).巴菲特的好友。六人被叫做是伯克(Burke)希尔(Hill).哈撒韦(一家出名集团)的黄金拍档。更是携手在这几十年的光阴里,创立了投资界的传奇。假如说沃伦(Warren).巴菲特是一名天赋,那么Charles.芒格则是这位天才的眼镜。查尔斯一向低调,但这丝毫不可能掩饰他的聪明之光。

  • 当Intent匹配成功的组件有两个时,呈现优先级高的零部件,假诺优先级相同,突显列表让用户自己挑选
  • 事先级从-1000至1000,并且其中一个亟须为负的才有效

四、心绪学思考

在这一局部的情节中,查尔斯(Charles)为我们罗列了她协调总结的片段人类误判激情学,共25条。

个别为:奖励和处置,一级反应的同情;喜欢/热爱倾向;讨厌/憎恨的倾向;避免猜疑倾向;制止不一致性倾向;好奇心倾向;康德式公平倾向;艳羡/妒忌倾向;回馈倾向;受简单联想倾向;简单的、制止痛苦的思想否认;自视过高的倾向;过度乐观倾向;被剥夺一级反应倾向;社会认可倾向;比较错误反馈倾向;压力影响倾向;错误衡量易得倾向;不用就忘倾向;化学物质错误影响倾向;衰老错误影响倾向;权威错误影响倾向;废话倾向;重视理由倾向;Loollapalooza倾向。

这25条覆盖了众人在生存、工作、学习中最普遍感处状况。为大家揭破了社会情感学的严重性规律,即认知往往取决于情景,所以不同的情景平日会挑起不同的定论,哪怕是同一个人在考虑同一个问题的时候也是这般。

俺们得以遵照这多少个点,归咎罗列出来一套属于大家团结的心绪学“检查清单”,再使用上文中查尔斯提议的思考情势和普世智慧,不断的复盘和总计,相信会有科学的效应。

自制《穷查尔斯宝典》思维导图

自制《穷查理(Charles)宝典》经典语录思维导图


上述,就是对《穷查尔斯宝典》中主题内容的梳理,同时内部也蕴含了有些私有的知情。各位读者对象在看的经过当中,如若发现自己总括不完善,不确切,有不当,或者不理解的地方,能够给我留言。

末段希望那篇小说能对大家面临的有的问题和迷离有所襄助,这将是自身写此文最大的收获。

骨子里我们不在清单文件中装置,只在代码中经过flag来设置也是可以的,如下:

以上那多少个内容。全都围绕着一个主题人物——查尔斯(Charles).芒格。

图片 1

出于考虑到一些人唯恐对这本书相比陌生,甚至是率先次听到这多少个名字。所以在梳理从前,我先简单介绍一下这本书究竟是讲怎么的。这样或许能让咱们在看的过程当中更好的去接受作者的片段眼光。倘使对这本书相比较精通的读者,可以直接跳过此段赘述。

Data属性的扬言中要指定访问数据的Uri和MIME类型。可以在<data>元素中通过一些性能来设置:

 

假如Intent对象中既包含Uri又带有Type,那么,在<intent-filter>中也非得双方都带有才能由此测试。

Type属性用于明确指定Data属性的数据类型或MIME类型,可是平日来说,当Intent不点名Data属性时,Type属性才会起效率,否则Android系统将会按照Data属性值来分析数据的品类,所以不要指定Type属性。

 

4、播放指定路线音乐:action+data+type

密码:qnix

第8行:设置data+type属性  

 

这时,点击MainActicity中的按钮,就会跳到SecondActicity中去。

三、Intent的科普应用:

在自定义动作时,使用activity组件时,必须添加一个默认的品类

第4行代码:指定了Intent的action是
Intent.ACTION_VIEW,表示查看的情趣,这是一个Android系统内置的动作;

  <category
android:name=”com.vince.intent.MY_CATEGORY”></category> 

 【声明】 

               <action
android:name=”com.example.action.MY_ACTION”/>

1     <uses-sdk
2         android:minSdkVersion="8"
3         android:targetSdkVersion="16" />
4     <uses-permission android:name="android.permission.CALL_PHONE"/>

 

1         button1.setOnClickListener(new OnClickListener() {            
2             @Override
3             public void onClick(View v) {
4                 Uri uri = Uri.parse("http://www.baidu.com");
5                 Intent intent = new Intent(Intent.ACTION_VIEW,uri);//方法: android.content.Intent.Intent(String action, Uri uri)        
6                 startActivity(intent);        
7             }
8         });

 

【形式二】直接拨打电话:

既然如此在Intent中加进了一个category,那么大家要在清单文件中去阐明这多少个category,不然程序将无法运转。代码如下:

5、卸载程序:action+data(例如点击按钮,卸载某个应用程序,按照包名来辨别)

 

在清单文件中修改对SecondAcivity的注明,即扩大一行代码,通过来android:priority设置优先级,如下:

Component属性明确指定Intent的靶子组件的类名称。(属于直接Intent)

  • singleTask情势:那种格局下,每一回启动一个activity时,系统率先会在回去栈中检查是否留存该活动的实例,假设存在,则直接使用该实例,并把那个活动之上的保有活动统统去掉;虽然没有发现就会创设一个新的运动实例;

图片 2

新建一个工程文件smyh006_Intent01,在默认文件的基础之上,新建文件SecondActicity.java和activity_second.xml。

此刻,运行程序,当点击MainActivity中的按钮时,弹出如下界面:

图片 3

咱俩修改修改清单文件中对SecondAcivity的宣示:

是此外具有附加消息的联谊。使用extras可以为组件提供扩张信息,比如,假诺要实施“发送电子邮件”这些

 

注:系统默认的浏览器并不曾做出优先级注解,其优先级默认为正数。

下面第5行代码:在这一个Intent中,我并没有点名具体哪一个Activity,我只是指定了一个action的常量。所以说,隐式Intent的功用就表现的淋漓了。此时,点击MainActicity中的按钮,就会跳到SecondActicity中去。

自然,上方代码也足以简写成:

 

脚下大家的Intent中惟有一个默认的category,现在得以经过intent.addCategory()方法来兑现。修改MainActivity中按钮的点击事件,代码如下:

Category属性也是当做<intent-filter>子元向来声称的。例如:

运作后,当点击按钮时,效果如下:

或者可以写成:

  • singleInstance形式:总是在新的职责中打开,并且这多少个新的天职中有且唯有这一个实例,也就是说被该实例启动的任何activity会自动运行于另一个职责中。当再一次启航该activity的实例时,会再度调用已存在的任务和实例。并且会调用这多少个实例的onNewIntent()方法,将Intent实例传递到该实例中。和singleTask相同,同一时刻在系统中只会设有一个如此的Activity实例。(singleInstance即单实例)

每个Intent中不得不指定一个action,但却能指定多少个category;体系越多,动作越具体,意图越强烈(类似于相亲时,给对方提了众多要求)。

 

6、extras(扩大音信):扩大信息

               <category
android:name=”android.intent.category.DEFAULT”/>

1                 Intent intent = new Intent(Intent.ACTION_CALL);
2                 intent.setData(Uri.parse("tel:10086"));
3                 startActivity(intent);

第5行代码:通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用intent的setData()方法将以此Uri对象传递进入。

1         Intent intent = new Intent(Intent.ACTION_VIEW);
2         Uri data = Uri.fromFile(new File("/storage/sdcard0/AndroidTest/smyh006_Intent01.apk"));    //路径不能写成:"file:///storage/sdcard0/···"
3         intent.setDataAndType(data, "application/vnd.android.package-archive");  //Type的字符串为固定内容
4         startActivity(intent);

图片 4

 

代码解释:

三、Activity的启动情势:(面试注意)

咱俩得以总计如下:

图片 5

1   button1.setOnClickListener(new OnClickListener() {            
2             @Override
3             public void onClick(View v) {
4                 Intent intent = new Intent(Intent.ACTION_VIEW);
5                 intent.setData(Uri.parse("http://www.baidu.com"));                
6                 startActivity(intent);        
7             }
8         });

随笔来源:http://www.cnblogs.com/smyhvae/p/3959204.html 

新建工程文件smyh006_Intent02,MainActivity.java中按钮监听事件部分的代码如下:

2、Action(动作):用来表现意图的行走

 1         button1.setOnClickListener(new OnClickListener() {            
 2             @Override
 3             public void onClick(View v) {
 4                 Intent intent = new Intent();
 5                 intent.setAction(Intent.ACTION_VIEW);
 6                 Uri data = Uri.parse("http://www.baidu.com");
 7                 intent.setData(data);                
 8                 startActivity(intent);        
 9             }
10         });

 

4、data(数据):表示与动作要控制的多少

假定
component那一个特性有指定的话,将直接使用它指定的零件。指定了那么些特性未来,Intent的其它具有属性都是可选的。

一个顺序启动后系统会为这一个程序分配一个task供其应用,另外同一个task里面可以拥有不同应用程序的activity。那么,同一个顺序能不可能具备多少个task?这就涉嫌到加载activity的启动情势,这多少个需要独自讲一下。

问题:通过上边的这种方法安装程序,运行时怎么会出错呢?

要动用这多少个职能必须在安排文件中插手权限:(加一行代码)

注:假如没有点名的category,则必须运用默认的DEFAULT(即上方第5行代码)。

3、category(序列):用来展现动作的系列

  • 将intent对象传给
    Context.sendBroadcast(),Context.sendOrdered布罗德cast(),或者Context.sendSticky布罗德(Broad)cast()等广播方法,则它们被传给 broadcast
    receiver。
 1         button1.setOnClickListener(new OnClickListener() {            
 2             @Override
 3             public void onClick(View v) {
 4                 //启动另一个Activity,(通过action属性进行查找)
 5                 Intent intent = new Intent();
 6                 //设置动作(实际action属性就是一个字符串标记而已)
 7                 intent.setAction("com.example.smyh006intent01.MY_ACTION"); //方法:Intent android.content.Intent.setAction(String action)
 8                 startActivity(intent);        
 9             }
10         });
 1         button1.setOnClickListener(new OnClickListener() {            
 2             @Override
 3             public void onClick(View v) {
 4                 //创建一个意图对象
 5                 Intent intent = new Intent();
 6                 //创建组件,通过组件来响应
 7                 ComponentName component = new ComponentName(MainActivity.this, SecondActivity.class);
 8                 intent.setComponent(component);                
 9                 startActivity(intent);                
10             }
11         });

 

上述情形唯有SecondActicity匹配成功。假使有四个零部件匹配成功,就会以对话框列表的不二法门让用户进行精选。大家来详细介绍一下:

data和type属性一般只需要一个,通过setData方法会把type属性设置为null,相反设置setType方法会把data设置为null,即便想要两个属性同时安装,要动用Intent.setDataAndType()方法。

MainActivity.java中,监听器部分的主导代码如下:

 

1         <activity 
2             android:name=".SecondActivity">
3             <intent-filter>
4                  <action android:name="android.intent.action.VIEW" />
5                  <category android:name="android.intent.category.DEFAULT" />
6                  <data android:scheme="http" android:host="www.baidu.com"/>                 
7             </intent-filter>            
8         </activity>

譬如,启动第二个Activity时,大家得以这样来写:

<intent-filter>

1             android:name=".SecondActivity">
2             <intent-filter>
3                  <action android:name="com.example.smyh006intent01.MY_ACTION"/>
4                  <category android:name="android.intent.category.DEFAULT" />
5                  <category android:name="com.example.smyh006intent01.MY_CATEGORY" />
6             </intent-filter>            
7         </activity>

注:第2行的门道不可能写成:”file:///storage/sdcard0/···”,不然报错如下:

【格局一】打开拨打电话的界面:

动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

 

信任我们看到了这多少个界面,应该就一目通晓了。于是我们能够做出如下总计:

1                 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2                 startActivity(intent);
1         Intent intent = new Intent(Intent.ACTION_SENDTO);
2         intent.setData(Uri.parse("smsto:18780260012"));
3         intent.putExtra("sms_body", "具体短信内容"); //"sms_body"为固定内容        
4         startActivity(intent);

对待与显式Intent,隐式Intnet则含蓄了许多,它并不明确提议我们想要启动哪一个移动,而是指定一多级更为抽象的action和category等音讯,然后交由系统去分析这多少个Intent,并帮我们找出适合的移位去启动。

1         button1.setOnClickListener(new OnClickListener() {            
2             @Override
3             public void onClick(View v) {
4                 Intent intent = new Intent(Intent.ACTION_VIEW);
5                 intent.setData(Uri.parse("http://www.baidu.com"));                
6                 startActivity(intent);        
7             }
8         });

【正文】

【实例】打开指定网页:

 

第4行代码:指定了Intent的action是
Intent.ACTION_VIEW,表示查看的意思,这是一个Android系统内置的动作;

此刻,
调用的是系统默认的浏览器,也就是说,只调用了那么些零部件。现在只要有六个零部件得到了配合,应该是如何情形吗?

Activity有四种启动情势:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity标签的性质android:launchMode中设置该activity的加载情势。

 

</intent-filter>

 

 

今昔,SecondActivity也匹配成功了,我们运行程序,点击MainActicity的按钮时,弹出如下界面供大家选择:

1、打开指定网页:(直接复制的下面的代码)

 

 

1     //通过指定的action来安装程序
2     public void installClickTwo(View view){
3         Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED);
4         Uri data = Uri.fromFile(new File("/storage/sdcard0/AndroidTest/smyh006_Intent01.apk"));    //路径不能写成:"file:///storage/sdcard0/···"
5         intent.setData(data);
6         startActivity(intent);
7     }
 1 package com.example.m06intent01;
 2 import java.io.File;
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.net.Uri;
 6 import android.os.Bundle;
 7 import android.view.Menu;
 8 import android.view.View;
 9 public class MainActivity extends Activity {
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14     }
15     //打开指定网页
16     public void browsePageClick(View view){
17         Intent intent = new Intent(Intent.ACTION_VIEW);
18         intent.setData(Uri.parse("http://www.baidu.com/"));
19         startActivity(intent);  
20         
21     } 
22     
23     //打开拨号面板
24     public void openDialPageClick(View view){
25         Intent intent = new Intent(Intent.ACTION_DIAL);
26         intent.setData(Uri.parse("tel:10086"));
27         startActivity(intent);        
28     }
29     
30     //直接拨打指定号码
31     public void dialPhoneClick(View view){
32         Intent intent = new Intent(Intent.ACTION_CALL);
33         intent.setData(Uri.parse("tel:10086"));
34         startActivity(intent);        
35     }
36     
37     //打开发短信的界面:action+type
38     public void openMsgPageClick(View view){
39         Intent intent = new Intent(Intent.ACTION_VIEW);
40         intent.setType("vnd.android-dir/mms-sms");
41         intent.putExtra("sms_body", "具体短信内容"); //"sms_body"为固定内容
42         startActivity(intent);        
43     }   
44     
45     //打开发短信的界面(指定电话号码):action+data
46     public void sendMsgClick(View view){
47         Intent intent = new Intent(Intent.ACTION_SENDTO);
48         intent.setData(Uri.parse("smsto:18780260012"));
49         intent.putExtra("sms_body", "具体短信内容"); //"sms_body"为固定内容        
50         startActivity(intent);        
51     }      
52     
53     //播放指定路径音乐
54     public void playMusicClick(View view){
55         Intent intent = new Intent(Intent.ACTION_VIEW);
56         Uri uri = Uri.parse("file:///storage/sdcard0/平凡之路.mp3");  //路径也可以写成:"/storage/sdcard0/平凡之路.mp3"
57         intent.setDataAndType(uri, "audio/mp3"); //方法:Intent android.content.Intent.setDataAndType(Uri data, String type)
58         startActivity(intent);
59     } 
60     
61     //卸载某个应用程序,根据包名来识别
62     public void uninstallClick(View view){
63         Intent intent = new Intent(Intent.ACTION_DELETE);
64         Uri data = Uri.parse("package:com.example.smyh006intent01");
65         intent.setData(data);
66         startActivity(intent);
67     } 
68     
69     //安装某个应用程序,根据apk的文件名来识别
70     public void installClick(View view){
71         Intent intent = new Intent(Intent.ACTION_VIEW);
72         Uri data = Uri.fromFile(new File("/storage/sdcard0/AndroidTest/smyh006_Intent01.apk"));    //路径不能写成:"file:///storage/sdcard0/···"
73         intent.setDataAndType(data, "application/vnd.android.package-archive");  //Type的字符串为固定内容
74         startActivity(intent);
75     }
76     
77     
78     @Override
79     public boolean onCreateOptionsMenu(Menu menu) {
80         // Inflate the menu; this adds items to the action bar if it is present.
81         getMenuInflater().inflate(R.menu.main, menu);
82         return true;
83     }
84     
85 }

【任务】:data+type属性的应用
【实例】:播放指定路线的mp4文本。

MainActivity.java代码如下:

3、发送短信:

图片 6

Action
是一个用户定义的字符串,用于描述一个 Android 应用程序组件,一个 Intent
Filter 能够蕴涵三个 Action。在 AndroidManifest.xml 的Activity
定义时,可以在其 <intent-filter
>节点指定一个 Action列表用于标识
Activity 所能接受的“动作”。

1         Intent intent = new Intent(Intent.ACTION_VIEW);
2         intent.setType("vnd.android-dir/mms-sms");
3         intent.putExtra("sms_body", "具体短信内容"); //"sms_body"为固定内容
4         startActivity(intent); 
 1         button.setOnClickListener(new OnClickListener(){
 2             @Override
 3             public void onClick(View v) {
 4                 Intent intent = new Intent();
 5                 intent.setAction(Intent.ACTION_VIEW);
 6                 Uri data = Uri.parse("file:///storage/sdcard0/平凡之路.mp3");
 7                 //设置data+type属性
 8                 intent.setDataAndType(data, "audio/mp3"); //方法:Intent android.content.Intent.setDataAndType(Uri data, String type)
 9                 startActivity(intent);                
10             }            
11         });

android:scheme、android:path、android:port、android:mimeType、android:host等,通过这个属性来对号入座一个非凡的Uri格式scheme://host:port/path。例如:http://www.google.com。

1         <activity 
2             android:name=".SecondActivity">
3             <intent-filter>
4                  <action android:name="com.example.smyh006intent01.MY_ACTION"/>
5                  <category android:name="android.intent.category.DEFAULT" />
6             </intent-filter>            
7         </activity>

Intent类型分为显式Intent(直接类型)、隐式Intent(直接类型)。官方指出选用隐式Intent。上述特性中,component属性为直接类型,其他均为直接类型。

 

注:android中一组逻辑上在协同的activity被称呼task,自己认为可以明白成一个activity堆栈。

MainActivity.java中,监听器部分的主题代码如下:

图片 7

再简单一点,可以如此写:(当然,也是最普遍的写法)

注:后边三种形式中,每个应用程序都有协调的回到栈,同一个活动在不同的归来栈中入栈时,必然是成立了新的实例。而使用singleInstance模式可以缓解这个问题,在这种格局下会有一个独自的归来栈来管理这一个活动,不管是哪一个应用程序来拜访这些运动,都公用同一个回去栈,也就迎刃而解了共享活动实例的题材。(此时可以实现任务之间的切换,而不是单身某个栈中的实例切换)

我们新建文件ThirdActicity.java和activity_third.xml,然后在清单文件AndroidManifest.xml中添加ThirdActivity的action和category的过滤器:

注:

Intent组件尽管不是四大组件,但却是连接四大组件的大桥,学习好这个知识,也十分的机要。

当点击按钮时,将跳到如下界面:

运转后,主界面如下:

 

 

1         Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2         //相当于singleTask
3         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
4         startActivity(intent);

2、打电话:

1         <activity 
2             android:name=".SecondActivity">
3             <intent-filter android:priority="-1">
4                  <action android:name="android.intent.action.VIEW" />
5                  <category android:name="android.intent.category.DEFAULT" />
6                  <data android:scheme="http" android:host="www.baidu.com"/>                                  
7             </intent-filter>            
8         </activity>

随即,我们要到清单文件中展开挂号,打开AndroidManifest.xml,添加SecondActivity的action和category的过滤器:

activity、service和broadcast
receiver之间是由此Intent进行通信的,而除此以外一个零部件Content
Provider本身就是一种通信机制,不需要经过Intent。大家来看上面这个图就领悟了:

  • standard形式:默认的情势,以那种格局加载时,每当启动一个新的位移,必定会构造一个新的Activity实例放到再次回到栈(目标task)的栈顶,不管这一个Activity是否曾经存在于再次回到栈中;
  • singleTop形式:假如一个以singleTop形式启动的activity的实例已经存在于重回桟的桟顶,那么再起步那个Activity时,不会成立新的实例,而是录取位于栈顶的不得了实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这个实例中;
  • Intent由以下顺序组成部分:
  • component(组件):目标组件
  • action(动作):用来显示意图的行路
  • category(连串):用来表现动作的项目
  • data(数据):表示与动作要控制的多少
  • type(数据类型):对于data范例的写照
  • extras(扩充信息):扩充音讯
  • Flags(标志位):期望以此意图的运作格局

  <action
android:name=”com.vince.intent.MY_ACTION”></action>

动用隐式Intent,我们不光可以启动自己程序内的移动,仍能够启动其他程序的运动,这使得Android两个应用程序之间的效能共享成为了可能。比如应用程序中需要展示一个网页,没有必要自己去实现一个浏览器(事实上也不太可能),而是只需要条用系统的浏览器来打开那些网页就行了。

二、Intent的连锁属性:

 

 

【工程文件】

上方界面中,使用的是三星系统默认的音乐播放器。

  • 动用Context.startActivity() 或
    Activity.startActivityForResult(),传入一个intent来启动一个activity。使用
    Activity.setResult(),传入一个intent来从activity中回到结果。

 

  • Data属性是Android要拜访的数据,和action和Category注网络麻豆式一样,也是在<intent-filter>中。
  • 五个零件匹配成功显示优先级高的;
    相同突显列表。

6、安装程序:action+data+type

上边代码中,也能够换成上面这种简单的格局:

 

1                 Intent intent = new Intent(Intent.ACTION_DIAL);
2                 intent.setData(Uri.parse("tel:10086"));
3                 startActivity(intent);  

 

1         <activity 
2             android:name=".ThirdActivity">
3             <intent-filter>
4                  <action android:name="com.example.smyh006intent01.MY_ACTION"/>
5                  <category android:name="android.intent.category.DEFAULT" />
6             </intent-filter>            
7         </activity> 

当今来修改MainActivity.java中按钮的点击事件,代码如下:

  • 将intent对象传给Context.startService(Service)()来启动一个service或者传消息给一个运行的service。将intent对象传给
    Context.bind瑟维斯(Service)()来绑定一个service。

图片 8

 

比方有多个零部件被匹配成功,就会以对话框列表的方法让用户展开分选。

1、component(组件):目标组件

Data是用一个uri对象来表示的,uri代表数量的地方,属于一种标识符。平常情形下,我们运用action+data属性的构成来描述一个意向:做怎么着

5、type(数据类型):对于data范例的描摹

【模式二】打开发短信的界面(同时指定电话号码):action+data

 

图片 9

预先级的部署如下:

小结如下:

 

 1         button1.setOnClickListener(new OnClickListener() {            
 2             @Override
 3             public void onClick(View v) {
 4                 Intent intent = new Intent();
 5                 intent.setAction(Intent.ACTION_VIEW);//方法:android.content.Intent.Intent(String action)
 6                 Uri data = Uri.parse("http://www.baidu.com");
 7                 intent.setData(data);                
 8                 startActivity(intent);        
 9             }
10         });

一经写的简便一点,监听事件onClick()方法里能够如此写:

也就是说:只有<action>和<category>中的内容还要可以配合上Intent中指定的action和category时,这几个活动才能响应Intent。即便使用的是DEFAULT这种默认的category,在稍后调用startActivity()方法的时候会活动将以此category添加到Intent中。

1         Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2         //相当于singleTop
3         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
4         startActivity(intent);
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     android:orientation="vertical"
10     tools:context=".MainActivity" >
11     <Button 
12         android:id="@+id/button1_browsePage"
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:onClick="browsePageClick"
16         android:text="打开指定网页"/>   
17     <Button 
18         android:id="@+id/button2_openDialPage"
19         android:layout_width="match_parent"
20         android:layout_height="wrap_content"
21         android:onClick="openDialPageClick"
22         android:text="打开拨号面板"/>
23     <Button 
24         android:id="@+id/button3_dialPhone"
25         android:layout_width="match_parent"
26         android:layout_height="wrap_content"
27         android:onClick="dialPhoneClick"
28         android:text="直接拨打指定号码"/>
29     <Button 
30         android:id="@+id/button4_openMsgPage"
31         android:layout_width="match_parent"
32         android:layout_height="wrap_content"
33         android:onClick="openMsgPageClick"
34         android:text="打开发短信的界面"/>
35     
36     
37      <Button 
38         android:id="@+id/button5_sendMsg"
39         android:layout_width="match_parent"
40         android:layout_height="wrap_content"
41         android:onClick="sendMsgClick"
42         android:text="给指定的人发短信"/>  
43         
44      <Button 
45         android:id="@+id/button6_playMusic"
46         android:layout_width="match_parent"
47         android:layout_height="wrap_content"
48         android:onClick="playMusicClick"
49         android:text="播放指定路径音乐"/>      
50      
51      <Button 
52         android:id="@+id/button7_uninstall"
53         android:layout_width="match_parent"
54         android:layout_height="wrap_content"
55         android:onClick="uninstallClick"
56         android:text="卸载程序"/>    
57      <Button 
58         android:id="@+id/button8_install"
59         android:layout_width="match_parent"
60         android:layout_height="wrap_content"
61         android:onClick="installClick"
62         android:text="安装程序"/>    
63         
64     
65 </LinearLayout>

注:无论是安装如故卸载,应用程序是依照包名package来识其它。

一、什么是Intent

 

第5行代码:通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用intent的setData()方法将以此Uri对象传递进入。

Activity 中 Intent Filter 的分外过程

  • Android中提供了Intent机制来增援应用间的并行与报道,或者接纳更准确的说法是,Intent不仅可用以应用程序之间,也可用于应用程序内部的activity, service和broadcast
    receiver之间的交互。Intent这几个阿尔巴尼(Barney)亚语单词的本意是“目标、意向、意图”。
  • Intent是一种运行时绑定(runtime
    binding)机制,它能在程序运行的历程中总是多个例外的机件。通过Intent,你的顺序可以向Android表明某种请求或者愿望,Android会依照意愿的始末接纳合适的机件来响应。

本来,上方代码也足以简写成:

生命壹号:http://www.cnblogs.com/smyhvae/ 

1、Intent的概念:

2、对于向这二种组件发送intent有不同的编制:

当通常生活中,描述一个意思或希望的时候,总是有一个动词在里边。比如:我想“做”三个俯卧撑;我要“写”
一封情书,等等。在Intent中,Action就是描述做、写等动作的,当你指明了一个Action,执行者就会依照本条动作的提醒,接受有关输入,表现对应行为,暴发符合的输出。在Intent类中,定义了一批量的动作,比如ACTION_VIEW,ACTION_PICK等,
基本包含了常用动作。加的动作越多,越规范。

欢迎转载,但请保留随笔原来出处→_→ 

【模式一】打开发送短信的界面:action+type

1         Intent intent = new Intent(Intent.ACTION_DELETE);
2         Uri data = Uri.parse("package:com.example.smyh006intent01");
3         intent.setData(data);
4         startActivity(intent);

7、Flags(标志位):期望以此意图的运作情势

具体如下:

1                 Intent intent = new Intent();
2                 //setClass函数的第一个参数是一个Context对象
3                 //Context是一个类,Activity是Context类的子类,也就是说,所有的Activity对象,都可以向上转型为Context对象
4                 //setClass函数的第二个参数是一个Class对象,在当前场景下,应该传入需要被启动的Activity类的class对象
5                 intent.setClass(MainActivity.this, SecondActivity.class);
6                 startActivity(intent);    

<intent-filter>

注:假诺以singleTop形式启动的activity的一个实例已经存在于重临桟中,不过不在桟顶,那么它的行为和standard情势相同,也会创建六个实例;

下面代码,表示SecondActicity可以配合第4行的MY_ACTION这多少个动作,此时,如若在其余的Acticity通过那个action的标准化来搜寻,这SecondActicity就有着了这一个原则。类似于相亲时,我要求对方有什么样原则,然后对方这么些SecondActicity恰巧满意了这些标准(够通俗了呢)。

运转程序后,点击按钮,显示如下界面: