android的编程界面相当直截了当,只要了解activity和view,就可以写出可用的应用。不过这还不够。android是一种手机操作系统,它提供了对各种与联网及通讯相关的支持。善用这些支持,才能开发出贴近移动应用特点的程序。
在android的种种编程概念中,尤为值得注意的是intent。intent的英文词义是“意图”,而在android的编程框架里面,也正是体现“想要做某事”的概念。它的作用是在activity之间传递数据,或者说,通过传递数据,达到请求另一activity执行某种操作的目的。下面以一个例子来展示intent的应用。
应用场景:某个手机阅读器程序,读者看到一篇文章,觉得不错,想要与朋友分享。
应用展现:按手机的menu键,弹出“分享”菜单,点击后显示一系列分享方式(短信、e-mail等)。
背景知识:android上不同程序里面的activity之间可以互相调用。你可以在自己的程序中,调用短信程序,发送一条短信。调用的方式就是向系统提出请求,系统会去调用适当的程序activity。
以下是源代码:
package com.ghstudio.sharetest;
import java.util.list;
import android.app.activity;
import android.content.intent;
import android.content.pm.packagemanager;
import android.content.pm.resolveinfo;
import android.os.bundle;
import android.view.menu;
import android.view.menuitem;
public class main extends activity {
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
}
/* 创建菜单 */
public boolean oncreateoptionsmenu(menu menu) {
menu.add(0,0,0,"分享");
return true;
}
public boolean onoptionsitemselected(menuitem item){
switch (item.getitemid()){
case 0:
intent intent=new intent(intent.action_send);
intent.settype("text/plain");
intent.putextra(intent.extra_subject, “分享”);
intent.putextra(intent.extra_text, "i would like to share this with you...");
startactivity(intent.createchooser(intent, gettitle()));
return true;
}
return false;
代码解析:首先创建一个options菜单,该菜单只有一个项“分享”。当点击菜单项时,创建一个intent。该intent设置为发送给支持action_send的activity。用两个putextra给intent设置了subject和text的数据,再用startactivity方法让系统调用适当的activity执行之。createchooser方法接受intent做参数,也同时接纳了intent里面要求的filter(action_send),只有支持action_send的activity才会被列入可选列表。
执行截图:
图一 按下menu键,显示分享菜单
图二 显示支持action_send的程序列表
图三 点击“信息”后,进入短信界面