Android系统自带分享
16lz
2021-01-24
目前Android开发分享功能用的比较多的时SharedSDK和友盟分享,其实Android系统已经提供了分享功能,而且更轻量级,用起来更方便,基本可以实现大部分的分享功能.直接贴上代码
package com.shutter.Utils.shareUitl;import android.app.Activity;import android.content.ComponentName;import android.content.ContentResolver;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.provider.MediaStore;import android.widget.Toast;/** * Created by yj on 2015/10/12. */public class ShareUtil { /** *国外社交的分享 * 由于国外的Ins,FB,MS几大app,通过意图过滤得到的要传递发送图片的Activity都只有一个,即分享界面的Activity,故这里只需要包名即可 * @param activity * @param packageName 要分享的国外的社交app(Ins,FB,MS) * @param fileUri 分享图片的Uri */ public static void shareImageForeign(Activity activity,String packageName,Uri fileUri){ Intent mIntent = new Intent(Intent.ACTION_SEND); mIntent.setType("image/*"); mIntent.putExtra(Intent.EXTRA_SUBJECT, "shareImage"); mIntent.setPackage(packageName); mIntent.putExtra(Intent.EXTRA_STREAM, fileUri); try { activity.startActivity(Intent.createChooser(mIntent, activity.getTitle())); } catch (android.content.ActivityNotFoundException e) { Toast.makeText(activity, "To be share,please install this software: " + packageName, Toast.LENGTH_SHORT).show(); } } /** * 国内几大社交的分享 * 由于国内几大社交app(QQ,空间,微信,朋友圈,微博等),通过意图过滤得到的要传递图片的Activity不只一个(例如QQ会出现发送,发送到电脑;微信会出现发送和收藏),故这里还需要制定具体分享 * 界面的全类名,才能实现快速分享 * @param context * @param packageName 要分享的社交app的包名 * @param shareActivityName 分享界面Activity的全类名 * @param fileUri 分享图片的Uri */ public static void shareImageChina(Context context,String packageName, String shareActivityName , Uri fileUri){ Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, fileUri); intent.putExtra(Intent.EXTRA_SUBJECT, "shareImage"); intent.putExtra(Intent.EXTRA_TITLE, "图片标题"); intent.setComponent((new ComponentName("packageName", "ActivityName"))); context.startActivity(intent); } /** * 保存视频文件到本地相册,并生成缩略图,避免分享时没有缩略图而显示为黑色 * @param path */ public static void saveSdScan(String path,Context context){// final Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path, MediaStore.Images.Thumbnails.MICRO_KIND); //生成缩略图 ContentValues localContentValues = new ContentValues(); localContentValues.put("_data", path); localContentValues.put("description", "save video ---"); localContentValues.put("mime_type", "video/mp4"); ContentResolver localContentResolver = context.getContentResolver(); Uri localUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; localContentResolver.insert(localUri, localContentValues);// MediaStore.Images.Media.insertImage(localContentResolver,bitmap,"thumbnail","thumbnail for video"); //这个是给图片添加缩略图 } /** * 国外视频的分享 * 国外app(Ins,FB,MS)支持直接分享视频的 * @param activity * @param packageName * @param fileUri */ public static void shareVideoForeign(Activity activity,String packageName,Uri fileUri){ //保存视频到相册以便分享 saveSdScan(fileUri.getPath(), activity); Intent mIntent = new Intent(Intent.ACTION_SEND); mIntent.setType("video/*"); mIntent.putExtra(Intent.EXTRA_SUBJECT, "shareVideo"); mIntent.setPackage(packageName); mIntent.putExtra(Intent.EXTRA_STREAM, fileUri); try { activity.startActivity(Intent.createChooser(mIntent, activity.getTitle())); } catch (android.content.ActivityNotFoundException e) { Toast.makeText(activity, "To be share,please install this software: " + packageName, Toast.LENGTH_SHORT).show(); } } /** * 国内视频的分享 * 目前国内只支持QQ,微信的直接发送视频,其他的(空间,朋友圈,微博)都需要借助于服务器,需要上传到服务器上,再将Url分享出去 * @param context * @param packageName * @param shareActivityName * @param fileUri */ public static void shareVideoChina(Context context,String packageName, String shareActivityName , Uri fileUri){ Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("video/*"); intent.putExtra(Intent.EXTRA_STREAM, fileUri); intent.putExtra(Intent.EXTRA_SUBJECT, "shareVideo"); intent.putExtra(Intent.EXTRA_TITLE, "视频标题"); intent.setComponent((new ComponentName("packageName", "ActivityName"))); context.startActivity(intent); }}
下面再给出国内和国外几大社交app的包名和类名
"微信", "com.tencent.mm.ui.tools.ShareImgUI", "com.tencent.mm" "朋友圈", "com.tencent.mm.ui.tools.ShareToTimeLineUI", "com.tencent.mm" "qq", "com.tencent.mobileqq.activity.JumpActivity","com.tencent.mobileqq" "qq空间", "com.qzone.ui.operation.QZonePublishMoodActivity","com.qzone" "新浪微博", "com.sina.weibo.EditActivity", "com.sina.weibo" "com.sina.weibog3" "腾讯微博", "com.tencent.WBlog.intentproxy.TencentWeiboIntent","com.tencent.WBlog" "FB" "com.facebook.katana" "MS" "com.instagram.android" "Ins" "com.facebook.orca"
更多相关文章
- Android-Fresco系列6 图片解码
- Android(安卓)获取图片研究
- android > ListView > 加载 网络/assets图片
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)
- android 缓存Bitmap - 开发文档翻译
- android 解决RecyclerView notifyDataSetChanged刷新闪屏问题(图
- android最简单的生成二维码demo
- ImagePicker,Android下的图片选择与裁剪
- android 图片查看器,可通过多点触控实现缩放