hga010手机版网址

Android组件种类hga010皇冠手机版

二月 21st, 2019  |  hga010皇冠手机版

 【声明】 

迎接转发,但请保留小说原来出处→_→ 

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

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

 

【正文】

Intent组件即使不是四大组件,但却是连接四大组件的桥梁,学习好那一个知识,也格外的第①。

一、什么是Intent

1、Intent的概念:

  • Android中提供了Intent机制来支援应用间的互动与电视宣布,或然应用更规范的布道是,Intent不仅可用来应用程序之间,也可用以应用程序内部的activity, service和broadcast
    receiver之间的互相。Intent那几个英语单词的本心是“目标、意向、意图”。
  • Intent是一种运维时绑定(runtime
    binding)机制,它能在程序运营的经过中一连多少个不一样的零件。通过Intent,你的先后可以向Android表明某种请求恐怕愿望,Android会依照意愿的始末选用合适的机件来响应。

activity、service和broadcast
receiver之间是经过Intent举行通讯的,而此外3个零件Content
Provider本人就是一种通讯机制,不必要经过Intent。大家来看下边那个图就明白了:

hga010皇冠手机版 1

借使Activity1需求和Activity2进行关联,二者不需求直接挂钩,而是通过Intent作为桥梁。通俗来讲,Intnet类似于中介、媒婆的角色。

 

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

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

  • 将intent对象传给Context.startService()来运行一个service只怕传音信给一个周转的service。将intent对象传给
    Context.bindService()来绑定3个service。

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

贰 、Intent的有关属性:

  • Intent由以下顺序组成部分:
  • component(组件):目的组件
  • action(动作):用来突显意图的走动
  • category(体系):用来突显动作的类型
  • data(数据):表示与动作要控制的数额
  • type(数据类型):对于data范例的描绘
  • extras(增加消息):扩张音信
  • Flags(标志位):期望以此打算的运作格局

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

对待与显式Intent,隐式Intnet则含蓄了比比皆是,它并不鲜明提出我们想要运行哪一个移动,而是指定一连串更为抽象的action和category等新闻,然后交由系统去分析那几个Intent,并帮大家找出非凡的位移去运转。

Activity 中 Intent Filter 的匹配进度:

hga010皇冠手机版 2

 

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

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

假如component那几个本性有内定的话,将一贯利用它钦点的零部件。钦赐了这几个本性以往,Intent的别样具有属性都以可选的。

譬如,运维第①个Activity时,大家得以这么来写:

 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()方法里可以这么写:

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                 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
2                 startActivity(intent);

 

 

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

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

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

 

叁 、category(系列):用来显示动作的档次

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

<intent-filter>

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

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

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

</intent-filter>   

Action
和category寻常是坐落一起用的,所以那边一起介绍一下。大家来先来举1个例子:

新建四个工程文件smyh006_Intent01,在暗中认同文件的基础之上,新建文件SecondActicity.java和activity_second.xml。

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

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可以包容第④行的MY_ACTION这一个动作,此时,倘使在其余的Acticity通过这几个action的原则来搜寻,那SecondActicity就颇具了这几个原则。类似于相亲时,我需要对方有啥样条件,然后对方那一个SecondActicity恰巧满意了这么些标准(够通俗了啊)。

注:要是没有点名的category,则必须使用暗中认同的DEFAULT(即上方第⑥行代码)。

相当于说:唯有<action>和<category>中的内容还要可以包容上Intent中内定的action和category时,那个活动才能响应Intent。倘诺采纳的是DEFAULT那种暗许的category,在稍后调用startActivity()方法的时候会活动将以此category添加到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         });

上边代码中,也能够换来上边那种简单的点子:

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中,小编并从未点名具体哪多个Activity,作者只是指定了七个action的常量。所以说,隐式Intent的效应就突显的不亦乐乎了。此时,点击MainActicity中的按钮,就会跳到SecondActicity中去。

上述处境只有SecondActicity匹配成功。倘诺有多少个零部件匹配成功,就会以对话框列表的措施让用户举办抉择。大家来详细介绍一下:

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

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中的按钮时,弹出如下界面:

hga010皇冠手机版 3

相信大家看到了那一个界面,应该就一目明白了。于是我们得以做出如下统计:

在自定义动作时,使用activity组件时,必须添加贰个暗中同意的种类

具体的贯彻为:

<intent-filter>

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

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

</intent-filter>

一经有多个零件被匹配成功,就会以对话框列表的法子让用户展开抉择。

各个Intent中不得不钦点二个action,但却能内定多个category;体系越来越多,动作越具体,意图越鲜明(类似于相亲时,给对方提了累累渴求)。

现阶段大家的Intent中唯有三个暗中同意的category,以后得以透过intent.addCategory()方法来达成。修改MainActivity中按钮的点击事件,代码如下:

 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中扩大了1个category,那么我们要在清单文件中去申明这些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中去。

总计如下:

自定义种类: 在Intent添加连串可以加上八个门类,那就须要被匹配的零件必须同时知足那多个品种,才能匹配成功。操作Activity的时候,如若没有项目,须加上暗中认同类别

 

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

  • Data属性是Android要访问的数据,和action和Category注脚方式相同,也是在<intent-filter>中。
  • 八个零件匹配成功展现优先级高的;
    相同突显列表。

Data是用四个uri对象来代表的,uri代表数量的地点,属于一种标识符。平时情况下,大家应用action+data属性的结缘来讲述1个企图:做哪些

接纳隐式Intent,我们不仅可以运行本身程序内的运动,还足以运行其余程序的活动,那使得Android多个应用程序之间的功用共享成为了说不定。比如应用程序中需求出示五个网页,没有须要本身去完结多少个浏览器(事实上也不太可能),而是只需求条用系统的浏览器来开辟那个网页就行了。

【实例】打开内定网页:

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

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

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

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

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

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

hga010皇冠手机版 4

此刻,
调用的是系统暗中同意的浏览器,相当于说,只调用了这个零部件。未来只要有多个零部件得到了同盟,应该是如何意况吗?

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

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的按钮时,弹出如下界面供大家挑选:

hga010皇冠手机版 5

我们得以计算如下:

  • 当Intent匹配成功的零件有五个时,突显优先级高的组件,倘若优先级相同,突显列表让用户自身采取
  • 预先级从-壹仟至一千,并且其中二个务必为负的才使得

注:系统私行认同的浏览器并不曾做出优先级讲明,其事先级暗中同意为正数。

事先级的配备如下:

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

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>

注:

Data属性的注明中要内定访问数据的Uri和MIME类型。能够在<data>成分中通过有个别属性来安装:

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

 

⑤ 、type(数据类型):对于data范例的形容

要是Intent对象中既蕴涵Uri又富含Type,那么,在<intent-filter>中也必须双方都带有才能透过测试。

Type属性用于分明钦点Data属性的数据类型或MIME类型,可是一般来说,当Intent不点名Data属性时,Type属性才会起效能,否则Android系统将会基于Data属性值来分析数据的门类,所以不要内定Type属性。

data和type属性一般只须要八个,通过setData方法会把type属性设置为null,相反设置setType方法会把data设置为null,若是想要多个天性同时安装,要动用Intent.setDataAndType()方法。

【职分】:data+type属性的利用
【实例】:播放指定路线的mp5文本。

实际如下:

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

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

代码解释:

第肆行:”file://”表示查找文件,前面再添加作者的国产手机存储卡的门径:/storage/sdcard0,再增加具体歌曲的门路。

第8行:设置data+type属性  

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

hga010皇冠手机版 6

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

 

⑥ 、extras(扩充音讯):扩张新闻

是其余具有附加信息的联谊。使用extras可以为组件提供增添消息,比如,尽管要实施“发送电子邮件”这么些

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

 

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

3个主次运维后系统会为这几个顺序分配二个task供其使用,此外同二个task里面可以享有不相同应用程序的activity。那么,同八个先后能如故不能够享有几个task?那就涉嫌到加载activity的启航格局,这几个必要独自讲一下。

注:android中一组逻辑上在联合的activity被称为task,自身觉得可以精通成二个activity堆栈。

 

叁 、Activity的启航方式:(面试注意)

Activity有两种运营形式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity标签的习性android:launchMode中设置该activity的加载方式。

  • standard情势:暗中认可的方式,以那种情势加载时,每当运营2个新的位移,必定会构造四个新的Activity实例放到再次来到栈(目的task)的栈顶,不管这几个Activity是还是不是曾经存在于重返栈中;
  • singleTop方式:假诺二个以singleTop形式运营的activity的实例已经存在于再次回到桟的桟顶,那么再开行那几个Activity时,不会创立新的实例,而是录取位于栈顶的可怜实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这些实例中;

注:假诺以singleTop方式运维的activity的2个实例已经存在于重回桟中,可是不在桟顶,那么它的一颦一笑和standard形式相同,也会创设七个实例;

  • singleTask方式:那种形式下,每一遍运维3个activity时,系统率先会在回到栈中检查是不是留存该活动的实例,假如存在,则直接采纳该实例,并把这一个活动之上的有着移动统统去掉;如果没有发现就会创设3个新的移动实例;

  • singleInstance格局:总是在新的天职中拉开,并且这一个新的义务中有且唯有那1个实例,相当于说被该实例运转的别样activity会自动运营于另叁个职务中。当再一次运维该activity的实例时,会另行调用已存在的职务和实例。并且会调用那几个实例的onNewIntent()方法,将Intent实例传递到该实例中。和singleTask相同,同一时刻在系统中只会设有一个这样的Activity实例。(singleInstance即单实例)

注:后面三种形式中,每一种应用程序都有投机的归来栈,同一个运动在不一致的回来栈中入栈时,必然是成立了新的实例。而接纳singleInstance形式能够消除这么些题目,在那种方式下会有1个独自的回到栈来管理那几个运动,不管是哪一个应用程序来拜访这几个活动,都公用同三个回去栈,也就化解了共享活动实例的题材。(此时得以兑现任务之间的切换,而不是独立有些栈中的实例切换)

 

实际大家不在清单文件中安装,只在代码中通过flag来安装也是足以的,如下:

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(MainActivity.this,SecondActivity.class);
2         //相当于singleTop
3         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
4         startActivity(intent);

 

 

三 、Intent的宽泛应用:

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

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

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

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

要么可以写成:

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

 

2、打电话:

【方式一】打开拨打电话的界面:

 

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

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

hga010皇冠手机版 7

 

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

 

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"/>

 

③ 、发送短信:

【方式一】打开发送短信的界面: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);

四 、播放钦赐路线音乐: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);

五 、卸载程序: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);

陆 、安装程序: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);

注:第二行的路线不只怕写成:”file:///storage/sdcard0/···”,不然报错如下:

hga010皇冠手机版 8

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

 

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 <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代码如下:

 

 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 }

运作后,主界面如下:

hga010皇冠手机版 9

【工程文件】

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

密码:qnix

Your Comments

近期评论

    功能


    网站地图xml地图