博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享到微信微博QQ的简单实现(二)
阅读量:7049 次
发布时间:2019-06-28

本文共 6162 字,大约阅读时间需要 20 分钟。

  hot3.png

NOTE:这只是简单的实现,没有使用各自的SDK。基本思路是通过包名和类名来直接操作的。如果app修改了名字,可能就需要对应的修改报名和类名。

之前有分享到微信,QQ的代码,自行查找,就在上一篇博客。接着写:

新浪微博:

public class ShareToXinlangWeibo {	private static final String PackageName = "com.sina.weibo";	private static final String ActivityName = "com.sina.weibo.EditActivity";	public static void share(Activity activity,String msg, ArrayList
 images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); intent.putExtra(Intent.EXTRA_TEXT, msg); intent.setType("image/jpeg");  intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, images); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装新浪微博!", Toast.LENGTH_SHORT).show(); } }}

易信好友:

public class ShareToYxFriend {	//易信好友	private static final String PackageName = "im.yixin";	private static final String ActivityName = "im.yixin.activity.share.ShareToSessionActivity";	//pics are OK。 text is not....	public static void share(Activity activity,String msg, ArrayList
 images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { ShareUtil shareUtil = new ShareUtil(activity, images); Intent baseIntent = shareUtil.getBaseIntent(ActivityName);// baseIntent.putExtra("summary", msg);// baseIntent.putExtra(Intent.EXTRA_TITLE, msg);// baseIntent.putExtra(Intent.EXTRA_TEXT, msg); baseIntent.putExtra(Intent.EXTRA_SUBJECT, msg); activity.startActivity(baseIntent); } else { Toast.makeText(activity, "您还没有安装易信!", Toast.LENGTH_SHORT).show(); } } }

易信状态:

public class ShareToYxZone {	private static final String PackageName = "im.yixin";	private static final String ActivityName = "im.yixin.activity.share.ShareToSnsActivity";	//pics are OK。 text is not....	public static void share(Activity activity,String msg, ArrayList
 images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { ShareUtil shareUtil = new ShareUtil(activity, images); Intent baseIntent = shareUtil.getBaseIntent(ActivityName); // baseIntent.putExtra("summary", msg);// baseIntent.putExtra(Intent.EXTRA_TITLE, msg); baseIntent.putExtra(Intent.EXTRA_TEXT, msg);// baseIntent.putExtra(Intent.EXTRA_SUBJECT, msg); activity.startActivity(baseIntent); } else { Toast.makeText(activity, "您还没有安装易信!", Toast.LENGTH_SHORT).show(); } } }

ShareUtil:

import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.pm.ResolveInfo;import android.net.Uri;public class ShareUtil {		private Context mContext;	private Intent mIntent;	private ArrayList
 mActivities = new ArrayList
(); public ShareUtil(Context context, ArrayList
 uris) { mContext = context; mIntent = computeSharingIntent(uris); loadActivities(); } private Intent computeSharingIntent(ArrayList
 uris) { final Intent intent = new Intent(); int size = uris.size(); final String mimeType = "image/*"; if (size > 1) { intent.setAction(Intent.ACTION_SEND_MULTIPLE).setType(mimeType); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); } else { intent.setAction(Intent.ACTION_SEND).setType(mimeType); intent.putExtra(Intent.EXTRA_STREAM, uris.get(0)); } intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); return intent; } private void loadActivities() { if (mIntent != null) { mActivities.clear(); List
 resolveInfos = mContext.getPackageManager() .queryIntentActivities(mIntent, 0); final int resolveInfoCount = resolveInfos.size(); for (int i = 0; i < resolveInfoCount; i++) { ResolveInfo resolveInfo = resolveInfos.get(i); mActivities.add(new ActivityResolveInfo(resolveInfo)); } } } public Intent getBaseIntent(String activityName) { if (mIntent == null) { return null; } for(int index = 0; index < mActivities.size(); index ++) { ActivityResolveInfo chosenActivity = mActivities.get(index); if(activityName.equals(chosenActivity.resolveInfo.activityInfo.name)) { ComponentName chosenName = new ComponentName( chosenActivity.resolveInfo.activityInfo.packageName, chosenActivity.resolveInfo.activityInfo.name); Intent choiceIntent = new Intent(mIntent); choiceIntent.setComponent(chosenName); choiceIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); return choiceIntent; } } return null; }// public void startAct(int index) {// Intent launchIntent = getBaseIntent(index);// if (launchIntent != null) {// launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);// mContext.startActivity(launchIntent);// }// } /**  * Represents an activity.  */ public final class ActivityResolveInfo implements Comparable
 { /**  * The {@link ResolveInfo} of the activity.  */ public final ResolveInfo resolveInfo; /**  * Weight of the activity. Useful for sorting.  */ public float weight; /**  * Creates a new instance.  *   * @param resolveInfo  *            activity {@link ResolveInfo}.  */ public ActivityResolveInfo(ResolveInfo resolveInfo) { this.resolveInfo = resolveInfo; } @Override public int hashCode() { return 31 + Float.floatToIntBits(weight); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } ActivityResolveInfo other = (ActivityResolveInfo) obj; if (Float.floatToIntBits(weight) != Float .floatToIntBits(other.weight)) { return false; } return true; } public int compareTo(ActivityResolveInfo another) { return Float.floatToIntBits(another.weight) - Float.floatToIntBits(weight); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("["); builder.append("resolveInfo:").append(resolveInfo.toString()); builder.append("; weight:").append(new BigDecimal(weight)); builder.append("]"); return builder.toString(); } }}

转载于:https://my.oschina.net/lifj/blog/396617

你可能感兴趣的文章
生成器函数进阶
查看>>
spring中InitializingBean接口使用理解(转)
查看>>
js作用域和作用域链
查看>>
NX签名//NXOpen VB.Net / C# Sign
查看>>
Mac下安装nginx
查看>>
Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
查看>>
【转】生活感悟
查看>>
smarty练习: 设置试题及打印试卷
查看>>
maven 项目打包配置(build节点)
查看>>
保存指定品质的图片
查看>>
多目标跟踪baseline methods
查看>>
关于QT_Creator不能在线调试问题
查看>>
六、python小功能记录——递归删除bin和obj内文件
查看>>
阅读《移山之道》及讲义感想
查看>>
python进阶-面向对象编程五:类的内置方法
查看>>
JAVA入门到精通-第52讲-面试题讲评
查看>>
05-spark streaming & kafka
查看>>
python杂记
查看>>
cd 简化命令
查看>>
LeetCode--205--同构字符串
查看>>