1. 程式人生 > >Android Intent分享檔案|分享圖片|分享文字|功能的實現

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<? 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好友這樣。