热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分享到微信微博QQ的简单实现(二)

为什么80%的码农都做不了架构师?NOTE:这只是简单的实现,没有使用各自的SDK。基本思路是通过包名和类名来直接操作的。如果app

为什么80%的码农都做不了架构师?>>>   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 &#61; new ArrayList();public ShareUtil(Context context, ArrayList uris){mContext &#61; context;mIntent &#61; computeSharingIntent(uris);loadActivities();}private Intent computeSharingIntent(ArrayList uris) {final Intent intent &#61; new Intent();int size &#61; uris.size();final String mimeType &#61; "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 !&#61; null) {mActivities.clear();List resolveInfos &#61; mContext.getPackageManager().queryIntentActivities(mIntent, 0);final int resolveInfoCount &#61; resolveInfos.size();for (int i &#61; 0; i < resolveInfoCount; i&#43;&#43;) {ResolveInfo resolveInfo &#61; resolveInfos.get(i);mActivities.add(new ActivityResolveInfo(resolveInfo));}}}public Intent getBaseIntent(String activityName) {if (mIntent &#61;&#61; null) {return null;}for(int index &#61; 0; index < mActivities.size(); index &#43;&#43;){ActivityResolveInfo chosenActivity &#61; mActivities.get(index);if(activityName.equals(chosenActivity.resolveInfo.activityInfo.name)){ComponentName chosenName &#61; new ComponentName(chosenActivity.resolveInfo.activityInfo.packageName,chosenActivity.resolveInfo.activityInfo.name);Intent choiceIntent &#61; 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 &#61; getBaseIntent(index);
// if (launchIntent !&#61; null) {
// launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
// mContext.startActivity(launchIntent);
// }
// }/*** Represents an activity.*/public final class ActivityResolveInfo implementsComparable {/*** The {&#64;link ResolveInfo} of the activity.*/public final ResolveInfo resolveInfo;/*** Weight of the activity. Useful for sorting.*/public float weight;/*** Creates a new instance.* * &#64;param resolveInfo*            activity {&#64;link ResolveInfo}.*/public ActivityResolveInfo(ResolveInfo resolveInfo) {this.resolveInfo &#61; resolveInfo;}&#64;Overridepublic int hashCode() {return 31 &#43; Float.floatToIntBits(weight);}&#64;Overridepublic boolean equals(Object obj) {if (this &#61;&#61; obj) {return true;}if (obj &#61;&#61; null) {return false;}if (getClass() !&#61; obj.getClass()) {return false;}ActivityResolveInfo other &#61; (ActivityResolveInfo) obj;if (Float.floatToIntBits(weight) !&#61; Float.floatToIntBits(other.weight)) {return false;}return true;}public int compareTo(ActivityResolveInfo another) {return Float.floatToIntBits(another.weight)- Float.floatToIntBits(weight);}&#64;Overridepublic String toString() {StringBuilder builder &#61; 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



推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
港乄漫天地
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有