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

  • 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 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)));
    }


    /**
     * 
    *
  • 分享任意类型的单个文件|不包含目录
  • *
  • [经验证!可以发送任意类型的文件!!!]
  • *
  • # @author http://blog.csdn.net/yuxiaohui78/article/details/8232402
  • *
      * * @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客户端进行发送 } /** *
        *
      • 分享任意类型的多个文件|不包含目录
      • *
      • [经验证!可以发送任意类型的文件!!!]
      • *
      • # @author http://blog.csdn.net/yuxiaohui78/article/details/8232402
      • *
          * * @param context * @param uris * list.add(Uri.from(file)); * */ public static void shareMultipleFiles(Context context, ArrayList 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好友这样。

你可能感兴趣的:(实际需求解决方案)