首页betway必威体育app官网 › betway必威体育app官网Android组件序列----Intent详解

betway必威体育app官网Android组件序列----Intent详解

只要有三个零部件被匹配成功,就会以对话框列表的章程让用户展开选取。

betway必威体育app官网 1

此时,点击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         });

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

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

总括如下:

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

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

小说来源:http://www.cnblogs.com/smyhvae/p/3959204.html 

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

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

当平时生活中,描述一个心愿或希望的时候,总是有一个动词在内部。比如:我想“做”多少个俯卧撑;我要“写”
一封情书,等等。在Intent中,Action就是描述做、写等动作的,当你指明了一个Action,执行者就会按部就班本条动作的指令,接受相关输入,表现对应行为,发生符合的出口。在Intent类中,定义了一批量的动作,比如ACTION_VIEW,ACTION_PICK等,
基本包含了常用动作。加的动作越多,越规范。

Activity 中 Intent Filter 的匹配过程

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

 

 

下面代码中,也得以换成下边这种简单的办法:

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

 

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

 

3、发送短信:

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

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

迎接转载,但请保留作品原来出处→_→ 

 

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

代码解释:

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

是此外具有附加音讯的成团。使用extras可以为组件提供扩展音信,比如,倘诺要执行“发送电子邮件”这多少个

 

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

 

</intent-filter>   

切实的兑现为:

 

  • standard情势:默认的情势,以那种格局加载时,每当启动一个新的运动,必定会构造一个新的Activity实例放到重临栈(目标task)的栈顶,不管这一个Activity是否早已存在于重临栈中;
  • singleTop情势:假如一个以singleTop形式启动的activity的实例已经存在于重返桟的桟顶,那么再开行这些Activity时,不会创设新的实例,而是录取位于栈顶的相当实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这么些实例中;

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

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的启动格局,这些需要单独讲一下。

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

 

我们可以总括如下:

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

或者可以写成:

 

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

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     }

也就是说:只有<action>和<category>中的内容还要可以兼容上Intent中指定的action和category时,那些运动才能响应Intent。如若采用的是DEFAULT这种默认的category,在稍后调用startActivity()方法的时候会活动将以此category添加到Intent中。

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

我们修改修改清单文件中对SecondAcivity的表明:

 

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

【工程文件】

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

 

各类Intent中只好指定一个action,但却能指定多少个category;类别越多,动作越具体,意图越强烈(类似于相亲时,给对方提了成千上万要求)。

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

MainActivity.java代码如下:

<intent-filter>

一、什么是Intent

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                 Intent intent = new Intent(Intent.ACTION_CALL);
2                 intent.setData(Uri.parse("tel:10086"));
3                 startActivity(intent);
  • 将intent对象传给Context.startService()来启动一个service或者传信息给一个周转的service。将intent对象传给
    Context.bindService(Service)()来绑定一个service。

1、Intent的概念:

 

继而,大家要到清单文件中开展注册,打开AndroidManifest.xml,添加SecondActivity的action和category的过滤器:

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

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

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

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

【正文】

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

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> 

注:系统默认的浏览器并从未做出优先级表明,其优先级默认为正数。

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

自定义连串: 在Intent添加序列可以加上多少个项目,这就要求被匹配的组件必须同时知足这三个档次,才能配合成功。操作Activity的时候,假使没有项目,须加上默认系列

具体如下:

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

 

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

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

 

 

先期级的布局如下:

betway必威体育app官网 2

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

</intent-filter>

假设Activity1需要和Activity2举行交换,二者不需要一向交流,而是经过Intent作为桥梁。通俗来讲,Intnet类似于中介、媒婆的角色。

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

 

Data是用一个uri对象来表示的,uri代表数量的地方,属于一种标识符。平日情状下,大家运用action+data属性的三结合来描述一个意向:做怎么着

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

Type属性用于明确指定Data属性的数据类型或MIME类型,但是一般来说,当Intent不点名Data属性时,Type属性才会起效果,否则Android系统将会按照Data属性值来分析数据的档次,所以不用指定Type属性。

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

data和type属性一般只需要一个,通过setData方法会把type属性设置为null,相反设置setType方法会把data设置为null,假诺想要四个特性同时设置,要运用Intent.setDataAndType()方法。

 

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

betway必威体育app官网 3

 

activity、service和broadcast
receiver之间是因而Intent举办通信的,而此外一个零部件Content
Provider本身就是一种通信机制,不需要经过Intent。大家来看下边那些图就精晓了:

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

采取隐式Intent,大家不仅可以启动自己程序内的活动,还足以启动其他程序的位移,这使得Android两个应用程序之间的效用共享成为了说不定。比如应用程序中需要显示一个网页,没有必要自己去实现一个浏览器(事实上也不太可能),而是只需要条用系统的浏览器来开辟这么些网页就行了。

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); 
  • Android中提供了Intent机制来救助应用间的互动与报道,或者采取更纯粹的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast
    receiver之间的相互。Intent那些韩文单词的原意是“目标、意向、意图”。
  • Intent是一种运行时绑定(runtime
    binding)机制,它能在程序运行的经过中总是三个例外的组件。通过Intent,你的顺序能够向Android表明某种请求或者愿望,Android会依照意愿的始末选取适宜的零件来响应。

betway必威体育app官网 4

betway必威体育app官网 5

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

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

注:无论是安装依然卸载,应用程序是基于包名package来识另外。

 

 【声明】 

二、Intent的连锁属性:

 

下边第5行代码:在这么些Intent中,我并从未点名具体哪一个Activity,我只是指定了一个action的常量。所以说,隐式Intent的效应就呈现的淋漓了。此时,点击MainActicity中的按钮,就会跳到SecondActicity中去。

3、category(系列):用来突显动作的序列

疑点:通过下边的这种措施安装程序,运行时怎么会出错呢?

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

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

再简单一点,可以那样写:(当然,也是最广大的写法)

 

注:假若以singleTop情势启动的activity的一个实例已经存在于再次来到桟中,不过不在桟顶,那么它的行为和standard形式相同,也会创制两个实例;

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

注:

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

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

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

其实我们不在清单文件中设置,只在代码中通过flag来安装也是可以的,如下:

 

信任大家看到了这些界面,应该就一目了然了。于是大家可以做出如下总括:

betway必威体育app官网 6

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

 

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

既是在Intent中加进了一个category,那么我们要在清单文件中去注解这么些category,不然程序将无法运行。代码如下:

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

  • 当Intent匹配成功的机件有五个时,展现优先级高的零件,尽管优先级相同,呈现列表让用户自己采取
  • 预先级从-1000至1000,并且其中一个务必为负的才使得

 

第6行:"file://"表示查找文件,前面再增长自己的三星手机存储卡的路子:/storage/sdcard0,再添加具体歌曲的不二法门。

betway必威体育app官网 7

<intent-filter>

 

 

 

只要写的简便一点,监听事件onClick()方法里可以这样写:

运行后,主界面如下:

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

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

第8行:设置data+type属性  

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

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

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

Category属性也是用作<intent-filter>子元从来声称的。例如:

【实例】打开指定网页:

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

 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>

注:android中一组逻辑上在一起的activity被称呼task,自己觉得可以精通成一个activity堆栈。

Data属性的宣示中要指定访问数据的Uri和MIME类型。能够在<data>元素中经过有些属性来安装:

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

密码:qnix

Intent组件即使不是四大组件,但却是连接四大组件的桥梁,学习好这么些文化,也充裕的根本。

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

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

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

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

 

第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                 intent.addCategory("com.example.smyh006intent01.MY_CATEGORY");
 9                 startActivity(intent);        
10             }
11         });
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);

假若component这多少个特性有指定的话,将直接接纳它指定的组件。指定了这多少个特性未来,Intent的别样具有属性都是可选的。

要使用这一个意义必须在部署文件中投入权限:(加一行代码)

三、Activity的起步情势:(面试注意)

下面代码,表示SecondActicity可以匹配第4行的MY_ACTION这些动作,此时,假若在此外的Acticity通过这几个action的条件来探寻,这SecondActicity就有着了这些标准。类似于相亲时,我要求对方有怎么着原则,然后对方这一个SecondActicity恰巧满足了这多少个原则(够通俗了呢)。

betway必威体育app官网 8

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

  • Data属性是Android要拜访的数据,和action和Category表明模式同样,也是在<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>

Action
和category平常是位于一起用的,所以这里一起介绍一下。我们来先来举一个事例:

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

6、extras(扩大音讯):扩展音信

2、打电话:

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

 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 }
  • singleTask情势:这种格局下,每一趟启动一个activity时,系统第一会在回来栈中检查是不是存在该运动的实例,假若存在,则一向动用该实例,并把这一个运动之上的保有活动统统去掉;如若没有发现就会创制一个新的活动实例;

这时,
调用的是系统默认的浏览器,也就是说,只调用了这个零部件。现在假若有六个零件得到了分外,应该是怎么样动静吗?

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

7、Flags(标志位):期望以此意图的运转形式

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

上述状况只有SecondActicity匹配成功。假使有五个零部件匹配成功,就会以对话框列表的不二法门让用户展开分选。大家来详细介绍一下:

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

 

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

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

 

  • 将intent对象传给
    Context.send布罗德cast(),Context.sendOrdered布罗德(Broad)cast(),或者Context.sendSticky布罗德cast()等广播方法,则它们被传给 broadcast
    receiver。
  • 应用Context.startActivity() 或
    Activity.startActivityForResult(),传入一个intent来启动一个activity。使用
    Activity.setResult(),传入一个intent来从activity中回到结果。

betway必威体育app官网 9

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

现在,SecondActivity也匹配成功了,大家运行程序,点击MainActicity的按钮时,弹出如下界面供大家接纳:

三、Intent的大规模应用:

 

  • Intent由以下依次组成部分:
  • component(组件):目标组件
  • action(动作):用来显现意图的行路
  • category(系列):用来显示动作的品类
  • data(数据):表示与动作要控制的数量
  • type(数据类型):对于data范例的描写
  • extras(增添音讯):扩充音讯
  • Flags(标志位):期望以此打算的运转格局

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

转载本站文章请注明出处:bway883.com https://www.piworx.com/?p=4221

上一篇:

下一篇:

相关文章

网站地图xml地图