Android中的互联网应用.doc_第1页
Android中的互联网应用.doc_第2页
Android中的互联网应用.doc_第3页
Android中的互联网应用.doc_第4页
Android中的互联网应用.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Intent的中文意思是“意图,意向”,可以把它理解为不同组件之间通信的“媒介”或者“信使”。也就是“把我的意思/意图告诉它”。举个例子来说吧,一位姑娘想找个对象,然后她找了一个媒婆,把她的要求(四有新人,即有型、有钱、有车、有房)告诉了这位媒婆,然后媒婆按照她的要求去寻找目标对象。在这里的“姑娘”是源组件(例如,一个activity),“媒婆”是intent,“目标对象”是目标组件。这样源组件通过intent找到了目标组件。目标组件要通过intent来声明自己的条件,一般通过组件的元素来实现。Intent到底都能干什么呢?Intent可以启动一个activity,也可以启动一个service,还可以发起一个广播(Broadcast)。具体方法如表所示。Intent启动不同组件的方法组件名称方法名称ActivitystartActivity()startActivityForResult()ServicestartService()bindService()BroadcastssendBroadcast()sendOrderedBroadcast()sendStickycast()Intent由以下几个部分组成:动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)和扩展信息(Extra)。通过这些可以启动其他组件并携带信息。Intent在寻找目标组件时有两种方法:第一,通过组件名称直接指定;第二,通过Intent Filter过滤指定,还是上面那个姑娘找对象的例子,可以有两种方法:第一,姑娘告诉媒婆我就找张三了;第二,姑娘提出条件(如要四有新人),那么就要在符合条件的人中过滤筛选。Intent对象及其属性Intent是对它要完成操作的一种抽象描述,我们可以使用Intent来启动一个Activity、发起一个Broadcast和启动或绑定一个Service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个Activity。Intent封装了它要执行动作的属性,这些属性最常见的是Action和Data。Intent的ComponentName属性在后续的内容中我们将介绍Intent的查找组件策略,其中的一种方法是显式查找,就是直接通过组件名称(Component name)来查找。Intent的组件名称对象由ComponentName类来封装,组件名称包含包名称和类名称,被声明在AndroidMainfest.xml文件中。组件名称通过setComponent()、setClass()、setClassName()设置,通过getComponent()获得。下面我们通过一个实例来演示Intent组件名称属性的使用,该实例是通过一个组件名称来直接启动一个Activity的。实例步骤说明如下。 创建一个名为intent_CompentNameDemo的项目。在工程的reslayout目录下创建一个main.xml布局文件,在其中添加一个Button组件。在“com.yidu.demo”包中创建一个MainActivity类。package com.yidu.demo;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/* * * author admins 测试intent的CompentName属性 */public class MainActivity extends Activity Button btn;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/ 设置视图布局setContentView(R.layout.main);/ 根据布局文件中的配置产生Button按钮btn = (Button) findViewById(R.id.myButton01);/ 为按钮添加监听器btn.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) /* * 实例化组件名称 new ComponentName(当前Activity对象,需要传递到的Activity) */ComponentName cn = new ComponentName(MainActivity.this,com.yidu.demo.MyActivity);/ 实例化Intent对象Intent intent = new Intent();/为intent设置组件名称属性intent.setComponent(cn);/启动ActivitystartActivity(intent););在该工程的reslayout目录下创建一个布局文件my_layout.xml,在其中添加一个TextView组件。 在该工程中创建另外一个名为MyActivity的类。package com.yidu.demo;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class MyActivity extends Activity private TextView tv;Overrideprotected void onCreate(Bundle savedInstanceState) / 设置视图布局super.onCreate(savedInstanceState);setContentView(R.layout.my_layout);/得到前一个Activity传过来的IntentIntent intent=this.getIntent();/得到组件名称对象ComponentName cn=intent.getComponent();/获得包的名称String packageName=cn.getPackageName();/得到类名String className=cn.getClassName();tv=(TextView)findViewById(R.id.TextView01);/显示tv.setText(组件包名称:+packageName+n+组件类名称:+className); Intent的Action属性Action是指Intent要完成的动作,是一个字符串常量。在Intent类里面定义了大量的Action常量属性,例如,ACTION_CALL(打电话)、ACTION_EDIT(编辑数据)、ACTION_BATTERY_LOW(电量低广播Action)等。我们也可以自己定义Action来使用。 我们可以使用setAction()来设置IntentAction属性,使用getAction来获得Intent的Action属性。1、 自定义Action属性 我们可以为Intent定义一个Action属性来访问,Action属性是一个字符串,我们在程序中定义,并在要访问组件(例如:Activity)的IntentFilter中声明就可以使用来。下面的实例将演示如何自定义一个Intent Action属性。在工程的reslayout目录下创建一个main.xml布局文件,在其中添加一个Button组件。创建一个工程,在“com.yidu.test”包中创建一个MyActivity类。import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MyActivity extends Activity public final static String MY_ACTION = com.yidu.test.MY_ACTION;Button btn;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new OnClickListener() public void onClick(View v) /实例化Intent类Intent intent = new Intent();/为Intent对象设置Action属性intent.setAction(MY_ACTION);/启动ActivitystartActivity(intent););在工程的reslayout目录下创建一个second.xml布局文件,在其中添加一个TextView视图组件。 创建一个SecondActivity类,在其顶部声明TextView组件,在onCreate()方法中实例化它,获得Intent实例,从而获得action属性并显示在TextView中。package com.yidu.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class SecondActivity extends Activity TextView tv;Overrideprotected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.second);tv = (TextView) findViewById(R.id.tv);/获得Intent对象Intent intent = getIntent();/获得Intent对象中包装的actionString action = intent.getAction();/将action设置在TextView中tv.setText(action);程序运行结果如下: 2、 访问系统Action属性 Android Intent类中定义了很多Action属性常量,这些有标准Activity和Broadcast Receiver的。上面我们讲述如何访问自定义Action属性。下面我们将讲述如何访问系统Action属性。例如,我们实现一个发送短信的程序,在这个程序中,我们需要选择对方的电话号码,这时候我们可以调用系统电话本来查找电话号码。我们可以使用Intent.ACTION_GET_CONTENT常量调用系统Activity来实现该功能。在工程reslayout目录中创建一个main.xml布局文件,在其中添加一个Button组件。创建一个Demo3Activity类。package com.yidu.demo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Demo3Activity extends Activity Button btn; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); btn=(Button)findViewById(R.id.button01); btn.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) Intent intent=new Intent();/设置Action属性为得到联系人intent.setAction(Intent.ACTION_GET_CONTENT);/设置其类型intent.setType(vnd.android.cursor.item/phone);/开启Activity。startActivity(intent);); 3、 Intent的Data属性Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。例如,ACTION_EDITAction应该和要编辑的文档URIData匹配,Action_VIEW应用和要显示的URI匹配。下面列出了一些常见的Action和Data的匹配应用。Action属性Data属性说明ACTION_VIEWcontent:/contacts/people/1显示_id为1的联系人信息ACTION_DIALcontent:/contacts/people/1将_id为1的联系人电话号码显示在拨号界面中ACTION_VIEWtel:123显示电话为123的联系人信息ACTION_VIEW在浏览器中浏览该网址ACTION_VIEWFile:/sdcard/mymusic.mp3播放Mp3ACTION_VIEWgeo:39.3256.116.2312显示地图案例如下:在reslayout目录下创建一个main.xml的文件。创建一个测试的Activity的界面类。import android.app.Activity;import android.content.Intent;import .Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MyActivity extends Activity Button btn; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); btn=(Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener()public void onClick(View v) Intent intent=new Intent();/* * 开启拨号的action */intent.setAction(Intent.ACTION_CALL);/intent.setData(Uri.parse(tel:123);/* * 开启主界面 */intent.setAction(Intent.ACTION_MAIN);/intent.addCategory(Intent.CATEGORY_HOME);/* * 开启联系人界面 */intent.setAction(Intent.ACTION_VIEW);/intent.setData(Uri.parse(content:/contacts/people);/* * 开启浏览器界面 */intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse();startActivity(intent); ); Intent的Extras属性Intent的Extras属性是添加一些组件的附加信息。比如从一个Activity传值到另一个Activity。下面的案例是在第一个Activity中输入姓名和密码,在第二个Activity中接收填写的值。在reslayout目录下创建一个main.xml的布局文件。 编写一个Activity的类。package com.yidu.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity Button btnLogin;EditText txtName; EditText txtPsw;Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /得到main.xml中的Button按钮 btnLogin=(Button)findViewById(R.id.btnLogin); /得到main.xml中的EditText控件 txtName=(EditText)findViewById(R.id.txtName); txtPsw=(EditText)findViewById(R.id.txtPsw); public void btnLogin(View v) Intent intent=new Intent();/设置需要转向的Activity界面intent.setAction(com.yidu.test.AnswerActivity);/创建一个Bundle对象Bundle bundle=new Bundle();/将数据按照键-值对的形式包装在Bundle对象中bundle.putString(txtName, txtName.getText().toString();bundle.putString(txtPsw, txtPsw.getText().toString();/将包装好的Bundle对象放置在Intent对象中intent.putExtras(bundle);/开启ActivitystartActivity(intent);编写接收Activity类布局xml。 编写Activity类呈现数据。package com.yidu.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class AnswerActivity extends Activity TextView tv;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.answer);tv=(TextView)findViewById(R.id.txtAnswer);Intent intent=getIntent();/从Intent对象取出BundleBundle bundle=intent.getExtras();/从Bundle对象中按放置进的键名将值取出来tv.setText(你的登录名为:+bundle.getString(txtName)+n密码为:+bundle.getString(txtPsw);Content Provider简介Content Provider用力保存和检索数据,并且使应用程序之间相互访问数据成为可能,它是跨应用程序共享数据的唯一方法。Android为常用的数据类型(如:音视频、图片和联系方式等)提供

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论