android中intent实例,Android的Intent机制实例讲解

在Android应用程序框架中,有一个比较强大的事件处理机制——Intent(意图)。Intent(意图)的作用与事件(event)很像,但与传统的事件处理有些差异。

传统的事件处理,讲究的是处理者(handler)的触发,当事件发生时,便callback事件的处理者,或是直接将该事件传送(forward)给应用程序,由应用程序决定处理方式。

在「Intent」这样的事件处理观念里,Android 试图将事件解释为「应用程序的意图」或是「使用者的意图」,并试着去解释该意图的目的,若 Android 系统本身能理解应用程序的意图,便会自行去处理该意图所应执行的工作。Android的做法是,在每一意图(Intent)都带有一个动作 (action),并根据不同的动作去行动。

下面是一个通过Intent实现一个自动拨号的例子:

建立一个android工程IntentDialer,编辑IntentDialer.java:

packagecom.android;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.net.Uri;

importandroid.os.Bundle;

importandroid.widget.Toast;

publicclassIntentDialerActivityextendsActivity {

/** Called when the activity is first created. */

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Intent dial = newIntent();

dial.setAction("android.intent.action.CALL");

dial.setData(Uri.parse("tel:13428720000"));

startActivity(dial);

Toast.makeText(this,"calling to young 13428720000", Toast.LENGTH_LONG).show();

}

}

因为permission的关系,所以也要在AndroidManifest.xml里加上「CALL_PHONE」的权限。编辑AndroidManifest.xml:

package="com.android"

android:versionCode="1"

android:versionName="1.0">

android:icon="@drawable/ic_launcher"

android:label="@string/app_name">

android:name=".IntentDialerActivity"

android:label="@string/app_name">

这个例子相当简单,但足以说明Intent的核心了。代码说明:

先新建一个Intent对象:

Intent dial =newIntent();

设定Intent的action为「android.intent.action.CALL」,这是一个內建的action:

dial.setAction("android.intent.action.CALL");

內建action「CALL」需要附带一笔资料,而资料的写法是使用URI格式:

dial.setData(Uri.parse("tel:XXXXX"));

「CALL」是一个activity action,所以调用startActivity()将Intent送给框架:

startActivity(dial);

这个例子的概念并不难理解:送出一个带有內建action的Intent給框架,因为action为CALL,所以框架会去启动拨号activity并拨打电话。

程序运行结果:

465e382b43894431d526914aa72f1605.png

【编辑推荐】

【责任编辑:Pockey TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值