天天看点

Android中“分享”功能的实现

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才会被列入可选列表。

执行截图:

Android中“分享”功能的实现

图一 按下menu键,显示分享菜单

Android中“分享”功能的实现

图二 显示支持action_send的程序列表

Android中“分享”功能的实现

图三 点击“信息”后,进入短信界面

继续阅读