Android Intent分享文件|分享图片|分享文字|功能的实现

来源:互联网 发布:手机淘宝邮箱注册 编辑:程序博客网 时间:2024/04/30 06:18
  • Android Intent 实现分享功能。可分享图片,文件,文字给QQ好友,微信好友,短信联系人。
  • 如我所知:网上已经有一大堆这样相关的资料。但是有些不幸的是:没有看到一个完整的,比较全面的,可以直接拿来使用的工具类。于是,我结合网上找的这些资料,做了一个简单的整合,以便使用。
  • 废话就不多说了,直接上代码:
package com.xxx.ggg.Media.mediaUtils;import java.io.File;import java.util.ArrayList;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Parcelable;import android.webkit.MimeTypeMap;import com.xxx.ggg.R;public class ShareUtils {    /**     *      * 分享功能|分享单张图片     *      * @param context     *            上下文     * @param activityTitle     *            Activity的名字     * @param msgTitle     *            消息标题     * @param msgText     *            消息内容     * @param imgPath     *            图片路径,不分享图片则传null     *      */    public static void shareMsg(Context context, String activityTitle,            String msgTitle, String msgText, String imgPath) {        Intent intent = new Intent(Intent.ACTION_SEND);        if (imgPath == null || imgPath.equals("")) {            intent.setType("text/plain"); // 纯文本        } else {            File f = new File(imgPath);            if (f != null && f.exists() && f.isFile()) {                intent.setType("image/jpg");                Uri u = Uri.fromFile(f);                intent.putExtra(Intent.EXTRA_STREAM, u);            }        }        intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);        intent.putExtra(Intent.EXTRA_TEXT, msgText);        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        context.startActivity(Intent.createChooser(intent, activityTitle));    }    /**     * 分享多张照片     *      * @param context     * @param list     *            ArrayList<ImageUri>      */    public static void sendMultiple(Context context,            ArrayList<? extends Parcelable> list) {        Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);        intent.setType("image/*");        intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, list);        intent.putExtra(Intent.EXTRA_SUBJECT, "");        intent.putExtra(Intent.EXTRA_TEXT, "");        intent.putExtra(Intent.EXTRA_TITLE, "");        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        context.startActivity(Intent.createChooser(intent, context                .getResources().getString(R.string.tv_sendSelect)));    }    /**     * <ul>     * <li>分享任意类型的<b style="color:red">单个</b>文件|不包含目录</li>     * <li>[<b>经验证!可以发送任意类型的文件!!!</b>]</li>     * <li># @author http://blog.csdn.net/yuxiaohui78/article/details/8232402</li>     * <ul>     *      * @param context     * @param uri     *            Uri.from(file);     *      */    public static void shareFile(Context context, Uri uri) {        // File file = new File("\sdcard\android123.cwj"); //附件文件地址        Intent intent = new Intent(Intent.ACTION_SEND);        intent.putExtra("subject", ""); //        intent.putExtra("body", ""); // 正文        intent.putExtra(Intent.EXTRA_STREAM, uri); // 添加附件,附件为file对象        if (uri.toString().endsWith(".gz")) {            intent.setType("application/x-gzip"); // 如果是gz使用gzip的mime        } else if (uri.toString().endsWith(".txt")) {            intent.setType("text/plain"); // 纯文本则用text/plain的mime        } else {            intent.setType("application/octet-stream"); // 其他的均使用流当做二进制数据来发送        }        context.startActivity(intent); // 调用系统的mail客户端进行发送    }    /**     * <ul>     * <li>分享任意类型的<b style="color:red">多个</b>文件|不包含目录</li>     * <li>[<b>经验证!可以发送任意类型的文件!!!</b>]</li>     * <li># @author http://blog.csdn.net/yuxiaohui78/article/details/8232402</li>     * <ul>     *      * @param context     * @param uris     *            list.add(Uri.from(file));     *      */    public static void shareMultipleFiles(Context context, ArrayList<Uri> uris) {        boolean multiple = uris.size() > 1;        Intent intent = new Intent(                multiple ? android.content.Intent.ACTION_SEND_MULTIPLE                        : android.content.Intent.ACTION_SEND);        if (multiple) {            intent.setType("*/*");            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);        } else {            Uri value = uris.get(0);            String ext = MimeTypeMap.getFileExtensionFromUrl(value.toString());            String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);            if(mimeType==null){                mimeType = "*/*";            }            intent.setType(mimeType);            intent.putExtra(Intent.EXTRA_STREAM, value);        }        context.startActivity(Intent.createChooser(intent, "Share"));    }}

以上,便是所谓的分享功能。很类似发送文件给qq好友这样。

0 0
原创粉丝点击