1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android——intent分享图片到微信好友 朋友圈 QQ

Android——intent分享图片到微信好友 朋友圈 QQ

时间:2022-10-12 16:55:25

相关推荐

Android——intent分享图片到微信好友 朋友圈 QQ

直接上代码,工具类

import ponentName;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import android.content.pm.PackageInfo;import android.database.Cursor;import .Uri;import android.os.Build;import android.provider.MediaStore;import android.util.Log;import android.widget.Toast;import java.io.File;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.List;public class WechatShareUtil {/*** 分享多图片到QQ*/public static void sharePicToQQNoSDK(Context context, List<String> paths) {if (isInstallQQ(context)) {Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);shareIntent.setType("image/*");// 遍历所有支持发送图片的应用。找到需要的应用ComponentName componentName = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity");shareIntent.setComponent(componentName);ArrayList<Uri> imageList = new ArrayList<>();for (String picPath : paths) {Log.e("backinfo", picPath);File file = new File(picPath);if (file.exists()){Uri uri = null;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {try {uri = Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), file.getName(), null));} catch (FileNotFoundException e) {Toast.makeText(context,"图片不存在", Toast.LENGTH_SHORT).show();e.printStackTrace();}} else {uri = Uri.fromFile(file);}imageList.add(uri);}}if(imageList.size() == 0){Toast.makeText(context,"图片不存在", Toast.LENGTH_SHORT).show();return;}shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageList);context.startActivity(Intent.createChooser(shareIntent, "Share"));}}/*** 分享单图片到朋友圈* @param context* @param imagePath*/public static void sharePicsToWXFriendCircle(Context context, String imagePath) {if (!isInstallWeChart(context)) {Toast.makeText(context,"您没有安装微信", Toast.LENGTH_SHORT).show();return;}Intent intent = new Intent();intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"));intent.setAction(Intent.ACTION_SEND);File f = new File(imagePath);Uri uri = null;if (f.exists()){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {uri = getImageContentUri(context, f);} else {uri = Uri.fromFile(f);}}else {Toast.makeText(context,"图片不存在", Toast.LENGTH_SHORT).show();return;}intent.setType("image/*");intent.putExtra(Intent.EXTRA_STREAM, uri); //图片数据(支持本地图片的Uri形式)intent.putExtra("Kdescription", ""); //微信分享页面,图片上边的描述context.startActivity(intent);}/*** 唤醒微信* @param context*/public static void startWechat(Context context){Intent intent = new Intent(Intent.ACTION_MAIN);ComponentName cmp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.LauncherUI");intent.addCategory(Intent.CATEGORY_LAUNCHER);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setComponent(cmp);context.startActivity(intent);}/*** 分享图片给好友(多图片)* @param context* @param paths*/public static void sharePicToWechatNoSDK(Context context, List<String> paths) {if(!isInstallWeChart(context)){Toast.makeText(context,"您没有安装微信", Toast.LENGTH_SHORT).show();return;}Intent intent = new Intent();ComponentName comp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");intent.setComponent(comp);intent.setAction(Intent.ACTION_SEND_MULTIPLE);intent.setType("image/*");ArrayList<Uri> imageList = new ArrayList<>();for (String picPath : paths) {File file = new File(picPath);if (file.exists()){Uri uri = null;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {try {uri = Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), file.getName(), null));} catch (FileNotFoundException e) {Toast.makeText(context,"图片不存在", Toast.LENGTH_SHORT).show();e.printStackTrace();}} else {uri = Uri.fromFile(file);}imageList.add(uri);}}if(imageList.size() == 0){Toast.makeText(context,"图片不存在", Toast.LENGTH_SHORT).show();return;}intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageList); //图片数据(支持本地图片的Uri形式)context.startActivity(intent);}/*** 获取分享到微信朋友圈的uri格式* @param context* @param imageFile* @return*/public static Uri getImageContentUri(Context context, File imageFile) {String filePath = imageFile.getAbsolutePath();Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA +"=? ",new String[]{filePath}, null);Uri uri =null;if (cursor !=null) {if (cursor.moveToFirst()) {int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));Uri baseUri = Uri.parse("content://media/external/images/media");uri = Uri.withAppendedPath(baseUri, "" + id);}cursor.close();}if (uri ==null) {ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.DATA, filePath);uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);}return uri;}/**检查是否安装微信* @param context* @return*/private static boolean isInstallWeChart(Context context){PackageInfo packageInfo = null;try {packageInfo = context.getPackageManager().getPackageInfo("com.tencent.mm", 0);} catch (Exception e) {packageInfo = null;e.printStackTrace();}if (packageInfo == null) {return false;} else {return true;}}/**检查是否安装QQ* @param context* @return*/private static boolean isInstallQQ(Context context){PackageInfo packageInfo = null;try {packageInfo = context.getPackageManager().getPackageInfo("com.tencent.mobileqq", 0);} catch (Exception e) {packageInfo = null;e.printStackTrace();}if (packageInfo == null) {return false;} else {return true;}}}

FileDownloader 递归多文件下载

import android.content.Context;import android.content.Intent;import .Uri;import android.util.Log;import com.liulishuo.filedownloader.BaseDownloadTask;import com.liulishuo.filedownloader.FileDownloadSampleListener;import com.liulishuo.filedownloader.FileDownloader;import com.weipai.dialog.LoadingDialog;import com.weipai.main.contact.Contact;import java.io.File;import java.util.ArrayList;import java.util.Date;import java.util.List;public class DownloadFileUtil {private Context context;private String path;private boolean isShowLoading = true;private List<String> pathList;private List<String> netUrlList;private OnFilesDownloadListener listener;//private LoadingDialog dialog;public static DownloadFileUtil init(Context context, String path) {return new DownloadFileUtil(context, path);}private DownloadFileUtil(Context context, String path) {this.context = context;this.path = path;pathList = new ArrayList<>();netUrlList = new ArrayList<>();}public DownloadFileUtil setOnFilesDownloadListener(OnFilesDownloadListener listener){this.listener = listener;return this;}private int fileCount = 0;private OnSingleFileDownloadListener l = new OnSingleFileDownloadListener() {@Overridepublic void onCompleted(String path) {++fileCount;pathList.add(path);if (fileCount == netUrlList.size()){//dialog.dismiss();if (listener != null) listener.onCompleted(pathList);}else {downloadFile(netUrlList.get(fileCount), l);}}};/*** 递归下载多文件* @param urls*/public void downloadFiles(final List<String> urls){netUrlList.clear();netUrlList.addAll(urls);if (netUrlList.size() > 0) {//dialog = new LoadingDialog(context);//dialog.show();downloadFile(urls.get(0), l);}}/*** 单文件下载* @param url* @param listener*/public void downloadFile(String url, final OnSingleFileDownloadListener listener) {Log.e("backinfo", "downloadFile " + fileCount);Log.e("backinfo", "downloadFile url" + url);Log.e("backinfo", "downloadFile path" + path);String fileName = new Date().getTime() + ".jpg";/*if (fileName.isEmpty()) {if (fileCount == netUrlList.size() - 1) dialog.dismiss();return;}*/FileDownloader.getImpl().create(url).setPath(path + fileName, false).setCallbackProgressTimes(300).setMinIntervalUpdateSpeed(400).setAutoRetryTimes(3).setListener(new FileDownloadSampleListener() {@Overrideprotected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {Log.e("backinfo", ",soFarBytes:" + soFarBytes + ",totalBytes:" + totalBytes + ",percent:" + soFarBytes * 1.0 / totalBytes + ",speed:" + task.getSpeed());}@Overrideprotected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {Log.e("backinfo", ",soFarBytes:" + soFarBytes + ",totalBytes:" + totalBytes + ",percent:" + soFarBytes * 1.0 / totalBytes + ",speed:" + task.getSpeed());}@Overrideprotected void blockComplete(BaseDownloadTask task) {Log.e("backinfo", "blockComplete ");}@Overrideprotected void completed(BaseDownloadTask task) {// VideoPlayerManager.instance().resumeVideoPlayer();File file = new File(task.getTargetFilePath());Log.e("backinfo", "completed " + task.getTargetFilePath());if (file.exists()) {Uri localUri = Uri.fromFile(file);Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri);context.sendBroadcast(localIntent);listener.onCompleted(file.getAbsolutePath());}}@Overrideprotected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {Log.e("backinfo", "paused ");}@Overrideprotected void error(BaseDownloadTask task, Throwable e) {Log.e("backinfo", "error " + e.getLocalizedMessage());}@Overrideprotected void warn(BaseDownloadTask task) {Log.e("backinfo", "warn ");}}).start();}private interface OnSingleFileDownloadListener{void onCompleted(String path);}public interface OnFilesDownloadListener{void onCompleted(List<String> pathList);}/** 获取文件后缀 */public String getFileExtension(String url) {int i = url.lastIndexOf('.');if (i > 0 && i < url.length() - 1) {return url.substring(i + 1).toLowerCase();}return "";}}

使用例:

DownloadFileUtil.init(context, "/sdcard/DCIM/Camera/").setOnFilesDownloadListener(new DownloadFileUtil.OnFilesDownloadListener() {@Overridepublic void onCompleted(List<String> pathList) {WechatShareUtil.sharePicToQQNoSDK(context, pathList);}}).downloadFiles(urls);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。