Android组件种类

 【声明】 

Intent组件固然不是四大组件,但却是连接四大组件的大桥,学习好这么些文化,也非常的机要。

ntent组件即便不是四大组件,但却是连接第四次全国代表大会组件的桥梁,学习好这么些文化,也不行的主要性。

招待转发,但请保留小说原本出处→_→ 

一、什么是Intent

一、什么是Intent

生命壹号: 

1、Intent的概念:

1、Intent的概念:

小说来源: 

Android中提供了Intent机制来援助应用间的交互与电视发表,大概应用更标准的传道是,Intent不唯有可用于应用程序之间,也可用来应用程序内部的activity, service和broadcast receiver之间的竞相。Intent这么些匈牙利语单词的原意是“指标、意向、意图”。
Intent是一种运转时绑定(runtime binding)机制,它能在程序运转的进度中一连四个分裂的零部件。通过Intent,你的次第能够向Android表明某种诉求可能愿望,Android会依据意愿的内容选拔拾贰分的零件来响应。
activity、service和broadcast receiver之间是透过Intent举办通讯的,而除此以外一个零件Content Provider本人就是一种通信机制,没有要求通过Intent。大家来看上边这些图就领悟了:

  • Android中提供了Intent机制来提携应用间的交互与电视发表,或许接纳更规范的说法是,Intent不仅仅可用来应用程序之间,也可用来应用程序内部的activity, service和broadcast receiver之间的竞相。Intent这几个塞尔维亚共和国(Republic of Serbia)语单词的本心是“指标、意向、意图”。
  • Intent是一种运营时绑定(runtime binding)机制,它能在程序运维的长河中年天命之年是七个不等的零部件。通过Intent,你的次序能够向Android表达某种诉求恐怕愿望,Android会根据意愿的剧情接纳适宜的组件来响应。

 

图片 1

activity、service和broadcast receiver之间是因而Intent进行通讯的,而除此以外一个零部件Content Provider本身就是一种通讯机制,不需求经过Intent。大家来看上边那个图就精晓了:

【正文】

051436115768172.png

图片 2

Intent组件固然不是四大组件,但却是连接四大组件的大桥,学习好这一个文化,也十三分的最首要。

只要Activity1须要和Activity2进行联系,二者无需从来关系,而是经过Intent作为桥梁。通俗来说,Intnet类似于中介、媒婆的剧中人物。

尽管Activity1须要和Activity2举办联络,二者无需一直沟通,而是通过Intent作为桥梁。通俗来讲,Intnet类似于中介、媒婆的剧中人物。

一、什么是Intent

2、对于向这两种组件发送intent有不相同的建制:

 

1、Intent的概念:

使用Context.startActivity() 或 Activity.startActivityForResult(),传入二个intent来运维一个activity。使用 Activity.setResult(),传入多少个intent来从activity中回到结果。
将intent对象传给Context.startService()来运行贰个service或然传音信给二个运转的service。将intent对象传给 Context.bindService()来绑定三个service。
将intent对象传给 Context.sendBroadcast(),Context.sendOrdered布罗兹cast(),也许Context.sendSticky布罗兹cast()等广播方法,则它们被传给 broadcast receiver。
二、Intent的连锁属性:

2、对于向那二种组件发送intent有例外的体制:

  • Android中提供了Intent机制来协理应用间的并行与报导,可能选用改进确的说教是,Intent不独有可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。Intent这么些法语单词的原意是“目标、意向、意图”。
  • Intent是一种运转时绑定(runtime binding)机制,它能在程序运营的经过中三翻五次七个不一样的机件。通过Intent,你的次第能够向Android表明某种诉求恐怕愿望,Android会遵照意愿的从头到尾的经过选取适用的零部件来响应。

Intent由以下依次组成都部队分:
component(组件):目标组件
action(动作):用来展现意图的步履
category(种类):用来表现动作的等级次序
data(数据):表示与动作要调整的数据
type(数据类型):对于data范例的描写
extras(扩大消息):扩大音信
Flags(标记位):期望以此希图的运维情势
Intent类型分为显式Intent(直接类型)、隐式Intent(直接类型)。官方指出接纳隐式Intent。上述性格中,component属性为间接类型,别的均为直接类型。

  • 采纳Context.startActivity() 或 Activity.startActivityForResult(),传入一个intent来运营三个activity。使用 Activity.setResult(),传入二个intent来从activity中回到结果。

activity、service和broadcast receiver之间是透过Intent举行通讯的,而除此以外二个组件Content Provider自身正是一种通讯机制,无需经过Intent。大家来看上边这些图就通晓了:

对待与显式Intent,隐式Intnet则含蓄了众多,它并不分明提出咱们想要运维哪五个移动,而是钦点一雨后玉兰片更为抽象的action和category等音信,然后交由系统去深入分析那么些Intent,并帮我们搜索相符的位移去运行。

图片 3

Activity 中 Intent Filter 的格外进程 :

  • 将intent对象传给Context.startService()来运营叁个service或然传音讯给三个周转的service。将intent对象传给 Context.bindService()来绑定三个service。

假使Activity1要求和Activity2举行联系,二者无需向来关系,而是通过Intent作为桥梁。通俗来说,Intnet类似于中介、媒婆的角色。

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

 

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

  • 将intent对象传给 Context.send布罗兹cast(),Context.sendOrdered布罗兹cast(),恐怕Context.sendSticky布罗兹cast()等广播方法,则它们被传给 broadcast receiver。

2、对于向那三种组件发送intent有例外的编写制定:

若是component这天性子有钦赐的话,将直接使用它钦定的零部件。钦定了那本性子现在,Intent的其他具备属性都是可选的。

二、Intent的连带属性:

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

例如,运维第叁个Activity时,我们能够如此来写:

  • Intent由以下顺序组成都部队分:
  • component(组件):指标组件
  • action(动作):用来展现意图的行进
  • category(连串):用来表现动作的种类
  • data(数据):表示与动作要调控的数码
  • type(数据类型):对于data轨范的形容
  • extras(扩大音信):扩张音讯
  • Flags(标记位):期待以此意向的运营方式

复制代码
复制代码
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 });
复制代码
复制代码
假使写的总结一点,监听事件onClick()方法里能够如此写:

Intent类型分为显式Intent(直接类型)、隐式Intent(直接类型)。官方提议利用隐式Intent。上述本性中,component属性为直接类型,其余均为直接类型。

  • 将intent对象传给Context.startService()来运营一个service也许传音讯给叁个周转的service。将intent对象传给 Context.bindService()来绑定三个service。

复制代码
1 Intent intent = new Intent();
2 //setClass函数的首先个参数是五个Context对象
3 //Context是贰个类,Activity是Context类的子类,也正是说,全体的Activity对象,都足以提高转型为Context对象
4 //setClass函数的第2个参数是一个Class对象,在当前气象下,应该传入须求被运转的Activity类的class对象
5 intent.setClass(MainActivity.this, SecondActivity.class);
6 startActivity(intent);
复制代码
再轻易一点,能够这么写:(当然,也是最广大的写法)

相比较与显式Intent,隐式Intnet则含蓄了许多,它并不明显建议大家想要运行哪贰个平移,而是钦点一层层更为抽象的action和category等消息,然后交由系统去剖判那个Intent,并帮大家寻觅确切的移动去运行。

1 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2 startActivity(intent);

Activity 中 Intent Filter 的十二分进度 :

  • 将intent对象传给 Context.send布Rhodescast(),Context.sendOrderedBroadcast(),可能Context.sendStickyBroadcast()等广播方法,则它们被传给 broadcast receiver。

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

图片 4

二、Intent的连锁属性:

当平时生活中,描述二个愿望或希望的时候,总是有二个动词在里面。比方:作者想“做”八个立卧撑;小编要“写” 一封情书,等等。在Intent中,Action正是描述做、写等动作的,当你指明了二个Action,实行者就能遵照本条动作的指令,接受相关输入,展现对应行为,发生相符的出口。在Intent类中,定义了一堆量的动作,例如ACTION_VIEW,ACTION_PICK等, 基本饱含了常用动作。加的动作更加的多,越标准。

 

  • Intent由以下依次组成都部队分:
  • component(组件):目标组件
  • action(动作):用来显现意图的行路
  • category(种类):用来展现动作的品种
  • data(数据):表示与动作要调节的数额
  • type(数据类型):对于data模范的勾勒
  • extras(扩张消息):扩张消息
  • Flags(标识位):期待以此筹划的运作方式

Action 是二个客商定义的字符串,用于描述一个 Android 应用程序组件,三个Intent Filter 能够分包七个 Action。在 AndroidManifest.xml 的Activity 定义时,能够在其 <intent-filter >节点钦命多个 Action列表用于标识Activity 所能接受的“动作”。

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

Intent类型分为显式Intent(直接类型)、隐式Intent(直接类型)。官方提出采纳隐式Intent。上述天性中,component属性为直接类型,其余均为直接类型。

3、category(连串):用来表现动作的种类

Component属性明显钦定Intent的指标组件的类名称。(属于直接Intent)

相比较与显式Intent,隐式Intnet则含蓄了许多,它并不分明提出大家想要运维哪八个运动,而是钦点一层层更为抽象的action和category等新闻,然后交由系统去解析那一个Intent,并帮大家寻觅确切的移动去运营。

Category属性也是充任<intent-filter>子成分来声称的。举个例子:

假设component那脾天性有钦定的话,将直接行使它钦定的零件。钦赐了那个性格未来,Intent的别的具备属性都是可选的。

Activity 中 Intent Filter 的相配过程:

<intent-filter>

比如,运转第2个Activity时,大家得以这么来写:

图片 5

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

图片 6

 

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

图片 7

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

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

 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         });

Component属性显著钦定Intent的对象组件的类名称。(属于直接Intent)

</intent-filter>

图片 8

倘若component那么些性情有钦赐的话,将一向动用它内定的机件。内定了那性情子以往,Intent的另外具备属性都以可选的。

Action 和category日常是放在一块儿用的,所以这里一齐介绍一下。大家来先来举三个例子:

图片 9

举个例子说,运行第2个Activity时,我们能够如此来写:

新建两个工程文件smyh006_Intent01,在暗中同意文件的底子之上,新建文件SecondActicity.java和activity_second.xml。

一经写的归纳一点,监听事件onClick()方法里能够那样写:

 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         });

随后,大家要到清单文件中进行登记,张开AndroidManifest.xml,加多SecondActivity的action和category的过滤器:

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);    

假如写的简要一点,监听事件onClick()方法里能够那样写:

复制代码
复制代码
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>
复制代码
复制代码
上边代码,表示SecondActicity能够相称第4行的MY_ACTION这几个动作,此时,假若在其他的Acticity通过那些action的尺度来查找,那SecondActicity就有着了那个规格。类似于相亲时,笔者须求对方有怎么样典型,然后对方这些SecondActicity恰巧满足了这么些条件(够通俗了呢)。

再轻松一点,能够如此写:(当然,也是最普及的写法)

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);    

注:若无一些名的category,则必需利用默许的DEFAULT(即上方第5行代码)。

1                 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2                 startActivity(intent);

再简单一点,能够如此写:(当然,也是最广泛的写法)

也便是说:唯有<action>和<category>中的内容还要能够宽容上Intent中钦命的action和category时,那几个运动本事响应Intent。假诺运用的是DEFAULT这种暗中同意的category,在稍后调用startActivity()方法的时候会自动将那几个category增加到Intent中。

 

1                 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2                 startActivity(intent);

最近来修改MainActivity.java中按键的点击事件,代码如下:

 

 

复制代码
复制代码
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 });
复制代码
复制代码
上面代码中,也足以换来下边这种简单的办法:

2、Action(动作):用来显示意图的走动

 

复制代码
复制代码
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 });
复制代码
复制代码
上面第5行代码:在这么些Intent中,小编并从未点名具体哪一个Activity,作者只是钦命了贰个action的常量。所以说,隐式Intent的坚守就显现的痛快淋漓了。此时,点击MainActicity中的按键,就能够跳到SecondActicity中去。

当平常生活中,描述叁个希望或希望的时候,总是有二个动词在里面。比如:笔者想“做”八个引体向上;我要“写” 一封情书,等等。在Intent中,Action就是描述做、写等动作的,当你指明了八个Action,试行者就能够鲁人持竿本条动作的提示,接受相关输入,表现对应行为,发生契合的出口。在Intent类中,定义了一堆量的动作,举例ACTION_VIEW,ACTION_PICK等, 基本包罗了常用动作。加的动作越多,越标准。

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

上述情形只有SecondActicity相配成功。假设有多少个零件相称成功,就能够以对话框列表的艺术让顾客展开精选。大家来详细介绍一下:

Action 是三个客商定义的字符串,用于描述贰个 Android 应用程序组件,三个Intent Filter 能够包蕴多少个 Action。在 AndroidManifest.xml 的Activity 定义时,能够在其 <intent-filter >节点钦赐二个 Action列表用于标识Activity 所能接受的“动作”。

当日常生活中,描述一个愿望或希望的时候,总是有二个动词在其间。比方:笔者想“做”多个掌上压;笔者要“写” 一封表白信,等等。在Intent中,Action正是描述做、写等动作的,当你指明了一个Action,实施者就能依据本条动作的指令,接受相关输入,表现对应行为,发生契合的出口。在Intent类中,定义了一堆量的动作,比如ACTION_VIEW,ACTION_PICK等, 基本满含了常用动作。加的动作越多,越规范。

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

 

Action 是二个顾客定义的字符串,用于描述三个 Android 应用程序组件,二个 Intent Filter 能够蕴含三个 Action。在 AndroidManifest.xml 的Activity 定义时,能够在其 <intent-filter >节点钦赐三个 Action列表用于标记Activity 所能接受的“动作”。

复制代码
复制代码
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中的开关时,弹出如下分界面:

3、category(连串):用来表现动作的品类

 

深信不疑大家看来了那几个分界面,应该就一清二楚了。于是大家得以做出如下计算:

Category属性也是作为<intent-filter>子成分来声称的。举例:

3、category(连串):用来表现动作的项目

在自定义动作时,使用activity组件时,必得增加二个私下认可的档案的次序

<intent-filter>

Category属性也是用作<intent-filter>子成分来声称的。比如:

现实的实现为:

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

<intent-filter>

<intent-filter>

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

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

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

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

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

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

</intent-filter>

</intent-filter>   

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

借使有多少个零件被匹配成功,就能够以对话框列表的主意让顾客实行精选。

Action 和category平时是身处一块儿用的,所以这里一同介绍一下。大家来先来举叁个例证:

</intent-filter>   

各种Intent中不得不钦定一个action,但却能钦定八个category;类别越来越多,动作越具体,意图越猛烈(类似于相亲时,给对方提了成都百货上千须求)。

新建一个工程文件smyh006_Intent01,在私下认可文件的功底之上,新建文件SecondActicity.java和activity_second.xml。

Action 和category经常是放在一同用的,所以这里一齐介绍一下。大家来先来举三个事例:

最近我们的Intent中独有一个暗许的category,未来能够通过intent.addCategory()方法来达成。修改MainActivity中按键的点击事件,代码如下:

随之,大家要到清单文件中开展注册,展开AndroidManifest.xml,加多SecondActivity的action和category的过滤器:

新建三个工程文件smyh006_Intent01,在私下认可文件的底子之上,新建文件SecondActicity.java和activity_second.xml。

复制代码
复制代码
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 });
复制代码
复制代码
既然如此在Intent中扩充了多个category,那么大家要在清单文件中去评释那个category,不然程序将无法运转。代码如下:

图片 10

随之,大家要到清单文件中举行注册,展开AndroidManifest.xml,增多SecondActivity的action和category的过滤器:

复制代码
复制代码
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>
复制代码
复制代码
那时候,点击MainActicity中的按键,就能够跳到SecondActicity中去。

图片 11

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>

总计如下:

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>

上边代码,表示SecondActicity能够同盟第4行的MY_ACTION这一个动作,此时,假如在其余的Acticity通过那几个action的原则来寻找,那SecondActicity就全部了那些条件。类似于相亲时,小编需要对方有哪些规范,然后对方这一个SecondActicity恰巧满足了这些规格(够通俗了吗)。

自定义连串: 在Intent增多体系能够拉长多少个品类,那将必要被相配的组件必需同期知足那七个类型,本事相称成功。操作Activity的时候,若无项目,须加上暗许连串

图片 12

注:若无一点名的category,则必需运用暗中同意的DEFAULT(即上方第5行代码)。

4、data(数据):表示与动作要调整的数量

图片 13

也正是说:独有<action>和<category>中的内容还要能够合作上Intent中钦点的action和category时,这一个活动才具响应Intent。假使接纳的是DEFAULT这种私下认可的category,在稍后调用startActivity()方法的时候会活动将以此category加多到Intent中。

Data属性是Android要拜候的数据,和action和Category注明方式同样,也是在<intent-filter>中。
八个零部件相配成功展示优先级高的; 同样展现列表。
Data是用二个uri对象来代表的,uri代表数量的地方,属于一种标志符。平日境况下,我们运用action data属性的咬合来描述多个意向:做怎么着

下边代码,表示SecondActicity能够相称第4行的MY_ACTION那么些动作,此时,假若在其余的Acticity通过那个action的规格来搜寻,那SecondActicity就全体了那几个原则。类似于相亲时,小编供给对方有啥样原则,然后对方这些SecondActicity恰巧满足了这几个标准(够通俗了呢)。

前段时间来修改MainActivity.java中开关的点击事件,代码如下:

行使隐式Intent,大家不只能够运营本身程序内的运动,还足以运转其余程序的活动,那使得Android多少个应用程序之间的效果分享成为了或然。举例应用程序中须要突显四个网页,无需自身去达成三个浏览器(事实上也不太大概),而是只必要条用系统的浏览器来展开那几个网页就行了。

注:若无一些名的category,则必得选用私下认可的DEFAULT(即上方第5行代码)。

 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         });

【实例】展开钦赐网页:

也正是说:独有<action>和<category>中的内容还要能够宽容上Intent中内定的action和category时,这些运动工夫响应Intent。假诺选择的是DEFAULT这种暗中同意的category,在稍后调用startActivity()方法的时候会活动将那个category增添到Intent中。

上面代码中,也足以换到上面这种轻松的法子:

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

以后来修改MainActivity.java中按键的点击事件,代码如下:

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 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 });
复制代码
复制代码
本来,上方代码也能够简写成:

图片 14

上面第5行代码:在那些Intent中,小编并从未点名具体哪三个Activity,作者只是钦命了一个action的常量。所以说,隐式Intent的功效就表现的淋漓了。此时,点击MainActicity中的按键,就能够跳到SecondActicity中去。

复制代码
复制代码
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系统内置的动作;

图片 15

上述情况独有SecondActicity相配成功。倘使有五个零部件相配成功,就能够以对话框列表的不二诀窍让客商展开选用。大家来详细介绍一下:

第5行代码:通过Uri.parse()方法,将三个网站字符串分析成三个Uri对象,再调用intent的setData()方法将这些Uri对象传递步入。

 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         });

咱俩新建文件ThirdActicity.java和activity_third.xml,然后在清单文件AndroidManifest.xml中增多ThirdActivity的action和category的过滤器:

当点击开关时,将跳到如下界面:

图片 16

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> 

那儿, 调用的是系统暗中认可的浏览器,也即是说,只调用了那三个零件。以后假如有多个零部件得到了十分,应该是何许动静吧?

图片 17

那儿,运转程序,当点击MainActivity中的按钮时,弹出如下分界面:

咱俩修改修改清单文件中对SecondAcivity的扬言:

下边代码中,也能够换来上面这种轻巧的方法:

图片 18

复制代码
复制代码
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>
复制代码
复制代码
现行反革命,SecondActivity也合营成功了,大家运转程序,点击MainActicity的按键时,弹出如下分界面供我们挑选:

图片 19

相信大家见到了这么些分界面,应该就一望而知了。于是大家得以做出如下计算:

咱们得以计算如下:

图片 20

在自定义动作时,使用activity组件时,必得增添叁个私下认可的品类

当Intent相配成功的机件有四个时,彰显优先级高的零件,要是优先级同样,呈现列表让顾客本身选取
预先级从-1000至1000,而且在那之中叁个必得为负的才有效
注:系统默许的浏览器并未做出优先级证明,其优先级默以为正数。

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         });

具体的兑现为:

预先级的计划如下:

图片 21

<intent-filter>

在清单文件中期维修改对SecondAcivity的宣示,即扩展一行代码,通过来android:priority设置优先级,如下:

图片 22

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

复制代码
复制代码
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>
复制代码
复制代码
注:

下边第5行代码:在那些Intent中,作者并未点名具体哪三个Activity,笔者只是钦点了贰个action的常量。所以说,隐式Intent的效果就显现的淋漓了。此时,点击MainActicity中的按键,就能够跳到SecondActicity中去。

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

Data属性的扬言中要钦命访谈数据的Uri和MIME类型。可以在<data>成分中通过有些性质来设置:

上述意况独有SecondActicity相配成功。假设有四个零部件相配成功,就能够以对话框列表的秘诀让客户举行抉择。大家来详细介绍一下:

</intent-filter>

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

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

假定有多个零件被相配成功,就能以对话框列表的方法让客户张开分选。

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

图片 23

种种Intent中只好钦定贰个action,但却能钦命四个category;种类越来越多,动作越具体,意图越猛烈(类似于相亲时,给对方提了重重渴求)。

倘使Intent对象中既饱含Uri又含有Type,那么,在<intent-filter>中也不能够不双方都富含才具因此测量检验。

图片 24

时下我们的Intent中独有一个默许的category,以后能够通过intent.addCategory()方法来促成。修改MainActivity中开关的点击事件,代码如下:

Type属性用于明显钦点Data属性的数据类型或MIME类型,可是常常来讲,当Intent不内定Data属性时,Type属性才会起效果,不然Android系统将会依附Data属性值来剖判数据的等级次序,所以不要内定Type属性。

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> 
 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         });

data和type属性寒时只需求三个,通过setData方法会把type属性设置为null,相反设置setType方法会把data设置为null,要是想要三个属性同时设置,要选择Intent.setDataAndType()方法。

图片 25

既然如此在Intent中扩大了贰个category,那么大家要在清单文件中去声明这么些category,不然程序将无法运维。代码如下:

【任务】:data type属性的使用 【实例】:播放内定路径的DVD文书。

图片 26

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>

实际如下:

那会儿,运营程序,当点击MainActivity中的按键时,弹出如下分界面:

此刻,点击MainActicity中的开关,就能够跳到SecondActicity中去。

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

图片 27

小结如下:

复制代码
复制代码
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/平凡之路.mp4");
7 //设置data type属性
8 intent.setDataAndType(data, "audio/mp3"); //方法:Intent android.content.Intent.setDataAndType(Uri data, String type)
9 startActivity(intent);
10 }
11 });
复制代码
复制代码
代码解释:

深信不疑大家看来了这一个分界面,应该就胸有成竹了。于是大家能够做出如下计算:

自定义类别: 在Intent增添体系能够加上多少个项目,那将要求被相配的零部件必得同期满意那四个连串,能力合营成功。操作Activity的时候,若无项目,须加上暗中同意体系

第6行:"file://"表示查找文件,后边再增进自身的荣耀手提式有线电话机存款和储蓄卡的路子:/storage/sdcard0,再加上具体歌曲的路线。

在自定义动作时,使用activity组件时,必得增添一个暗中认可的档期的顺序

 

第8行:设置data type属性

切实的达成为:

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

运行后,当点击按键时,效果如下:

<intent-filter>

  • Data属性是Android要访谈的多寡,和action和Category申明格局同样,也是在<intent-filter>中。
  • 七个零部件相称成功呈现优先级高的; 同样呈现列表。

上方分界面中,使用的是华为系统私下认可的音乐播放器。

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

Data是用三个uri对象来代表的,uri代表数量的地方,属于一种标记符。平时情状下,大家应用action data属性的重组来描述二个意图:做怎么样

6、extras(增添消息):扩充消息

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

使用隐式Intent,我们不仅能运行自身程序内的运动,还足以运维其余程序的活动,那使得Android五个应用程序之间的效率分享成为了只怕。举例应用程序中须求体现贰个网页,无需本身去贯彻多少个浏览器(事实上也不太恐怕),而是只必要条用系统的浏览器来张开这么些网页就行了。

是其他具备附加消息的集合。使用extras可认为组件提供扩充新闻,例如,要是要举办“发送电子邮件”那么些

</intent-filter>

【实例】展开钦点网页:

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

只要有两个零件被相配成功,就能够以对话框列表的艺术让客商张开选用。

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

7、Flags(标识位):期待以此意向的周转模式

每种Intent中不得不钦点四个action,但却能钦命多少个category;连串越来越多,动作越具体,意图越明显(类似于相亲时,给对方提了无数供给)。

 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         });

一个程序运转后系统会为这一个顺序分配多个task供其利用,别的同三个task里面能够享有分化应用程序的activity。那么,同一个程序能或不能够有所多少个task?那就事关到加载activity的起步情势,这么些需求独自讲一下。

此时此刻大家的Intent中唯有贰个暗许的category,今后得以因而intent.addCategory()方法来兑现。修改MainActivity中开关的点击事件,代码如下:

道理当然是那样的,上方代码也得以简写成:

注:android中一组逻辑上在一同的activity被喻为task,本人以为能够知道成三个activity仓库。

图片 28

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         });

三、Activity的开行形式:(面试注意)

图片 29

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

Activity有几种运转方式:standard、singleTop、singleTask、singleInstance。能够在AndroidManifest.xml中activity标签的性格android:launchMode中安装该activity的加载方式。

 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         });

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

standard形式:默许的格局,以这种情势加载时,每当运营叁个新的运动,必定会构造三个新的Activity实例放到重回栈(指标task)的栈顶,不管这几个Activity是不是早就存在于重回栈中;
singleTop形式:假使一个以singleTop情势运行的activity的实例已经存在于重临桟的桟顶,那么再开行那几个Activity时,不会创立新的实例,而是录取位于栈顶的十三分实例,何况会调用该实例的onNewIntent()方法将Intent对象传递到那些实例中;
注:要是以singleTop格局运转的activity的贰个实例已经存在于再次来到桟中,可是不在桟顶,那么它的一颦一笑和standard方式一样,也会创建八个实例;

图片 30

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

singleTask方式:这种方式下,每一次运维叁个activity时,系统率先会在回来栈中检查是还是不是留存该运动的实例,如果存在,则直接动用该实例,并把那个活动之上的具备移动统统去掉;若无发觉就能够创建贰个新的运动实例;
singleInstance格局:总是在新的职分中张开,何况那些新的任务中有且唯有那贰个实例,也等于说被该实例运行的任何activity会自动运维于另一个职务中。当再次运维该activity的实例时,会再一次调用已存在的天职和实例。况且会调用那几个实例的onNewIntent()方法,将Intent实例传递到该实例中。和singleTask一样,同临时刻在系统中只会设有一个如此的Activity实例。(singleInstance即单实例)
注:后边二种形式中,各类应用程序都有温馨的回到栈,同一个平移在分裂的归来栈中入栈时,必然是创办了新的实例。而利用singleInstance模式能够缓和那些主题材料,在这种格局下会有一个独自的归来栈来管理这么些活动,不管是哪贰个应用程序来拜望那些运动,都公用同三个赶回栈,也就一下子就解决了了分享活动实例的标题。(此时可以达成职分之间的切换,并非单身某些栈中的实例切换)

图片 31

图片 32

实际上大家不在清单文件中设置,只在代码中经过flag来安装也是能够的,如下:

既然在Intent中追加了多个category,那么我们要在清单文件中去表明这一个category,否则程序将不能够运维。代码如下:

那儿, 调用的是系统暗许的浏览器,也便是说,只调用了那一个零部件。未来只要有几个零件获得了同盟,应该是何许景况呢?

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

图片 33

我们修改修改清单文件中对SecondAcivity的扬言:

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

图片 34

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>

三、Intent的科学普及应用:

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>

现今,SecondActivity也同盟成功了,大家运营程序,点击MainActicity的开关时,弹出如下分界面供大家挑选:

1、张开钦定网页:(直接复制的方面包车型客车代码)

图片 35

图片 36

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

图片 37

作者们能够总计如下:

复制代码
复制代码
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 });
复制代码
复制代码
本来,上方代码也足以简写成:

那时候,点击MainActicity中的开关,就能够跳到SecondActicity中去。

  • 当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系统内置的动作;

计算如下:

注:系统默许的浏览器并不曾做出优先级评释,其事先级默以为正数。

第5行代码:通过Uri.parse()方法,将三个网站字符串深入分析成贰个Uri对象,再调用intent的setData()方法将那个Uri对象传递进入。

自定义种类: 在Intent增加连串能够加上多少个品种,这就须求被相称的零部件必需同期满足那多个体系,能力相称成功。操作Activity的时候,若无项目,须加上暗中同意种类

刚开始阶段级的配备如下:

仍是能够写成:

 

在清单文件中期维修改对SecondAcivity的扬言,即扩张一行代码,通过来android:priority设置优先级,如下:

复制代码
复制代码
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 });
复制代码
复制代码

4、data(数据):表示与动作要调整的数据

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>

2、打电话:

  • Data属性是Android要拜谒的数码,和action和Category证明格局一样,也是在<intent-filter>中。
  • 三个零件匹配成功体现优先级高的; 一样显示列表。

注:

【情势一】张开拨打电话的分界面:

Data是用一个uri对象来代表的,uri代表数量的地方,属于一种标记符。日常状态下,大家应用action data属性的构成来描述贰个计划:做哪些

Data属性的宣示中要钦命访谈数据的Uri和MIME类型。能够在<data>成分中通过某性情质来安装:

1 Intent intent = new Intent(Intent.ACTION_DIAL);
2 intent.setData(Uri.parse("tel:10086"));
3 startActivity(intent);
运作程序后,点击开关,展现如下分界面:

运用隐式Intent,大家不只能运维自身程序内的运动,还能运转其余程序的活动,那使得Android多少个应用程序之间的效劳分享成为了或许。举个例子应用程序中要求出示贰个网页,不供给自个儿去贯彻二个浏览器(事实上也不太恐怕),而是只供给条用系统的浏览器来开荒这几个网页就行了。

android:scheme、android:path、android:port、android:mimeType、android:host等,通过这一个属性来对号入座八个天下第一的Uri格式scheme://host:port/path。举例:

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

【实例】展开内定网页:

 

1 Intent intent = new Intent(Intent.ACTION_CALL);
2 intent.setData(Uri.parse("tel:10086"));
3 startActivity(intent);
要采纳那一个成效亟须在配置文件中投入权限:(加一行代码)

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

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

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

图片 38

假如Intent对象中既饱含Uri又含有Type,那么,在<intent-filter>中也不能够不双方都含有本事由此测验。

3、发送短信:

图片 39

Type属性用于明显钦命Data属性的数据类型或MIME类型,可是平常来讲,当Intent不点名Data属性时,Type属性才会起效果,不然Android系统将会依据Data属性值来深入分析数据的品种,所以不用钦赐Type属性。

【方式一】张开拓送短信的分界面:action type

 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         });

data和type属性日常只供给二个,通过setData方法会把type属性设置为null,相反设置setType方法会把data设置为null,假如想要两特性情同一时候安装,要使用Intent.setDataAndType()方法。

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);
【格局二】展开垦短信的分界面(同一时候钦命电话号码):action data

图片 40

【职分】:data type属性的使用
【实例】:播放钦点路径的mp4文件。

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);
4、播放钦定路径音乐:action data type

图片 41

切切实实如下:

1 Intent intent = new Intent(Intent.ACTION_VIEW);
2 Uri uri = Uri.parse("file:///storage/sdcard0/平凡之路.mp4"); ////路线也得以写成:"/storage/sdcard0/平凡之路.mp5"
3 intent.setDataAndType(uri, "audio/mp3"); //方法:Intent android.content.Intent.setDataAndType(Uri data, String type)
4 startActivity(intent);
5、卸载程序:action data(比如点击按键,卸载有个别应用程序,依照包名来甄别)

理之当然,上方代码也足以简写成:

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

注:无论是安装依旧卸载,应用程序是基于包名package来识别的。

图片 42

 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         });

1 Intent intent = new Intent(Intent.ACTION_DELETE);
2 Uri data = Uri.parse("package:com.example.smyh006intent01");
3 intent.setData(data);
4 startActivity(intent);
6、安装程序:action data type

图片 43

代码解释:

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);
注:第2行的门路不能够写成:"file:///storage/sdcard0/···",不然报错如下:

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         });

第6行:"file://"表示查找文件,前边再增加小编的荣耀手提式有线电话机存款和储蓄卡的渠道:/storage/sdcard0,再增加具体歌曲的不二等秘书籍。

疑点:通过上边包车型客车这种办法安装程序,运营时怎会出错呢?

图片 44

第8行:设置data type属性  

复制代码
复制代码
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 }
复制代码
复制代码

图片 45

运作后,当点击开关时,效果如下:

汇总,完整版代码如下:

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

图片 46

复制代码
复制代码
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>
复制代码
复制代码
MainActivity.java代码如下:

第5行代码:通过Uri.parse()方法,将二个网站字符串深入分析成四个Uri对象,再调用intent的setData()方法将以此Uri对象传递步向。

上方分界面中,使用的是金立系统暗中同意的音乐播放器。

复制代码
复制代码
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/平凡之路.mp5"); //路线也可以写成:"/storage/sdcard0/平凡之路.mp4"
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 }
复制代码
复制代码
运维后,主分界面如下:

当点击开关时,将跳到如下分界面:

 

最早的文章链接:https://www.cnblogs.com/engine1984/p/4146621.html

图片 47

6、extras(扩充音讯):增加信息

此时, 调用的是系统暗中认可的浏览器,也正是说,只调用了那五个组件。以后一经有四个零部件获得了特别,应该是什么样状态吗?

是其余具备附加消息的汇集。使用extras可以为组件提供扩充音讯,比方,假如要实行“发送电子邮件”这一个

作者们修改修改清单文件中对SecondAcivity的宣示:

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

图片 48

 

图片 49

7、Flags(标识位):期待以此准备的运作格局

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>

二个先后运行后系统会为那一个顺序分配一个task供其采取,别的同四个task里面可以具有不一样应用程序的activity。那么,同贰个顺序能或不能够具备四个task?那就涉及到加载activity的启航形式,这几个要求单独讲一下。

图片 50

注:android中一组逻辑上在一块的activity被称作task,自身感觉能够了然成三个activity货仓。

图片 51

 

现行反革命,SecondActivity也非常成功了,大家运营程序,点击MainActicity的按键时,弹出如下分界面供我们选择:

三、Activity的运转形式:(面试注意)

图片 52

Activity有多样运维方式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity标签的属性android:launchMode中安装该activity的加载方式。

作者们得以总计如下:

  • standard格局:默许的情势,以这种方式加载时,每当运营贰个新的活动,必定会构造三个新的Activity实例放到重回栈(指标task)的栈顶,不管那个Activity是或不是业已存在于重回栈中;
  • singleTop格局:假设八个以singleTop情势运营的activity的实例已经存在于重回桟的桟顶,那么再起步这一个Activity时,不会创造新的实例,而是录取位于栈顶的不得了实例,况且会调用该实例的onNewIntent()方法将Intent对象传递到这几个实例中;
  • 当Intent相配成功的零件有多少个时,展现优先级高的组件,如若优先级一样,展现列表让客商本人挑选
  • 优先级从-1000至1000,並且当中一个必得为负的才使得

注:要是以singleTop格局运维的activity的八个实例已经存在于再次回到桟中,但是不在桟顶,那么它的一颦一笑和standard形式一样,也会创设多少个实例;

注:系统默许的浏览器并不曾做出优先级申明,其优先级暗中同意为正数。

  • singleTask形式:这种格局下,每便运营叁个activity时,系统率先会在回来栈中检查是还是不是留存该活动的实例,若是存在,则直接使用该实例,并把这么些活动之上的有所移动统统去掉;若无发觉就能够成立一个新的活动实例;

预先级的安插如下:

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

  • singleInstance格局:总是在新的职务中打开,并且这一个新的职分中有且唯有那四个实例,也等于说被该实例运转的其他activity会自动运营于另三个职责中。当再一次启航该activity的实例时,会再也调用已存在的天职和实例。並且会调用这些实例的onNewIntent()方法,将Intent实例传递到该实例中。和singleTask同样,同临时刻在系统中只会设有叁个这样的Activity实例。(singleInstance即单实例)

图片 53

注:前面三种形式中,各样应用程序皆有温馨的回到栈,同多少个移动在不相同的归来栈中入栈时,必然是创建了新的实例。而采取singleInstance格局能够缓和那些难点,在这种格局下会有贰个单独的归来栈来管理那个活动,不管是哪二个应用程序来拜谒那个运动,都公用同一个赶回栈,也就缓慢解决了分享活动实例的主题材料。(此时能够完结任务之间的切换,并不是单独某些栈中的实例切换)

图片 54

 

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>

实质上大家不在清单文件中装置,只在代码中经过flag来设置也是足以的,如下:

图片 55

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

图片 56

 

注:

 

Data属性的宣示中要钦赐访谈数据的Uri和MIME类型。能够在<data>成分中经过一些本性来设置:

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

android:scheme、android:path、android:port、android:mimeType、android:host等,通过那个属性来对号入座三个标准的Uri格式scheme://host:port/path。举个例子:

 

 

 

5、type(数据类型):对于data楷模的写照

三、Intent的广阔应用:

如果Intent对象中既包括Uri又包罗Type,那么,在<intent-filter>中也亟须双方都带有才具透过测验。

1、张开内定网页:(直接复制的地点的代码)

Type属性用于分明钦定Data属性的数据类型或MIME类型,不过常常来讲,当Intent不钦赐Data属性时,Type属性才会起成效,不然Android系统将会基于Data属性值来深入分析数据的类型,所以不用钦定Type属性。

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

data和type属性日常只必要贰个,通过setData方法会把type属性设置为null,相反设置setType方法会把data设置为null,倘使想要五个属性同有时候安装,要选用Intent.setDataAndType()方法。

 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         });

【职务】:data type属性的使用 【实例】:播放钦赐路径的DVD文书。

理所必然,上方代码也得以简写成:

切实如下:

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         });

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

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

图片 57

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

图片 58

要么能够写成:

 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         });
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         });

图片 59

 

图片 60

2、打电话:

代码解释:

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

第6行:"file://"表示查找文件,前边再增添作者的红米手提式有线话机存款和储蓄卡的路线:/storage/sdcard0,再增进具体歌曲的门径。

 

第8行:设置data type属性  

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

运营后,当点击按键时,效果如下:

运维程序后,点击按键,展现如下分界面:

图片 61

图片 62

上方分界面中,使用的是HUAWEI系统暗中认可的音乐播放器。

 

 

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

6、extras(扩张音信):扩张音信

 

是其他拥有附加信息的联谊。使用extras可以为组件提供扩张新闻,比方,如果要实施“发送电子邮件”那么些

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

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

要使用那么些作用必得在布局文件中插手权限:(加一行代码)

 

 

7、Flags(标记位):期待以此意向的运营形式

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

一个顺序运营后系统会为那个程序分配二个task供其行使,别的同叁个task里面能够享有分歧应用程序的activity。那么,同三个程序能否具有几个task?那就关系到加载activity的运转形式,这些需求独自讲一下。

 

注:android中一组逻辑上在一块儿的activity被誉为task,自个儿以为可以知道成贰个activity货仓。

3、发送短信:

 

【格局一】展开垦送短信的分界面:action type

三、Activity的开发银行格局:(面试注意)

 

Activity有八种运转方式:standard、singleTop、singleTask、singleInstance。能够在AndroidManifest.xml中activity标签的质量android:launchMode中装置该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); 
  • standard格局:暗中认可的格局,以这种形式加载时,每当运转多个新的移动,必定会构造一个新的Activity实例放到再次回到栈(目的task)的栈顶,不管这几个Activity是或不是曾经存在于重返栈中;
  • singleTop方式:如果贰个以singleTop形式运行的activity的实例已经存在于重临桟的桟顶,那么再起步那些Activity时,不会创立新的实例,而是录取位于栈顶的极度实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这么些实例中;

【格局二】展开拓短信的分界面(同有时候内定电话号码):action data

注:即使以singleTop情势运维的activity的三个实例已经存在于再次回到桟中,但是不在桟顶,那么它的行事和standard格局同样,也会创建七个实例;

 

  • singleTask方式:这种形式下,每便运营八个activity时,系统第一会在回来栈中检查是还是不是存在该运动的实例,借使存在,则平素动用该实例,并把这几个运动之上的具备移动统统去掉;若无发觉就能够创立五个新的移动实例;
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);

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

  • singleInstance情势:总是在新的任务中张开,况兼那几个新的天职业中学有且唯有那些实例,也正是说被该实例运行的其余activity会自动运营于另叁个职分中。当再次运维该activity的实例时,会另行调用已存在的任务和实例。何况会调用这么些实例的onNewIntent()方法,将Intent实例传递到该实例中。和singleTask一样,同不常刻在系统中只会存在一个那样的Activity实例。(singleInstance即单实例)

 

注:前边二种形式中,每一种应用程序都有谐和的归来栈,同三个平移在不一样的回来栈中入栈时,必然是创建了新的实例。而使用singleInstance情势能够化解这么些主题材料,在这种方式下会有叁个独立的回来栈来处理这些活动,不管是哪三个应用程序来做客这几个运动,都公用同一个重返栈,也就一下子就解决了了分享活动实例的难题。(此时能够实现任务之间的切换,并不是单身有个别栈中的实例切换)

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);

 

5、卸载程序:action data(比方点击开关,卸载某个应用程序,依照包名来甄别)

实际上大家不在清单文件中装置,只在代码中经过flag来安装也是能够的,如下:

注:无论是安装依然卸载,应用程序是根据包名package来识别的。

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

 

 

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

 

6、安装程序:action data type

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

 

 

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);

 

注:第2行的不二等秘书诀不可能写成:"file:///storage/sdcard0/···",不然报错如下:

三、Intent的常见应用:

图片 63

1、张开钦命网页:(直接复制的地点的代码)

疑问:通过上面包车型的士这种办法安装程序,运维时怎么会出错呢?

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

 

图片 64

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     }

图片 65

 

 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         });

 

图片 66

 

图片 67

 

本来,上方代码也能够简写成:

综述,完整版代码如下:

图片 68

 

图片 69

 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>
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         });

MainActivity.java代码如下:

图片 70

 

图片 71

 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 }

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

运营后,主分界面如下:

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

图片 72

抑或能够写成:

【工程文件】

图片 73

链接:

图片 74

密码:qnix

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         });

图片 75

图片 76

 

2、打电话:

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

 

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

运转程序后,点击开关,彰显如下分界面:

图片 77

 

【格局二】直接拨打电话:

 

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

要动用这几个意义亟须在安顿文件中投入权限:(加一行代码)

 

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

 

3、发送短信:

【情势一】张开垦送短信的分界面:action type

 

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); 

【格局二】展开荒短信的分界面(同一时间钦定电话号码):action data

 

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);

4、播放钦定路径音乐:action data type

 

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);

5、卸载程序:action data(举例点击开关,卸载某些应用程序,依照包名来识别)

注:无论是安装依然卸载,应用程序是依附包名package来识其余。

 

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

6、安装程序:action data type

 

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);

注:第2行的路子不能够写成:"file:///storage/sdcard0/···",不然报错如下:

图片 78

闷葫芦:通过下边的这种方式安装程序,运转时怎么会出错呢?

 

图片 79

图片 80

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     }

图片 81

图片 82

 

 

 

 

综上所述,完整版代码如下:

 

图片 83

图片 84

 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>

图片 85

图片 86

MainActivity.java代码如下:

 

图片 87

图片 88

 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 }

图片 89

图片 90

运作后,主分界面如下:

图片 91

本文由亚洲必赢娱乐游戏发布于必赢娱乐网址,转载请注明出处:Android组件种类

TAG标签: 必赢娱乐网址
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。