微信android发送图片,[求助]Xposed微信发送图片方法
基于微信7.0.3
发送文本
发送文件的方法都已经找到了(从其他地方复制到了)
但是发送图片方法一直找不到,就算找到了也会报错
插入代码
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.util.ArrayList;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
public class WXMessageUtils {
public static void sendText(final String wxId,
String strContent) {
if (MainXposed.classLoader == null) {
XposedBridge.log("微信助手未初始化");
return;
}
//构造new里面的参数:l iVar = new i(aao, str, hQ, i2, mVar.cvb().fD(talkerUserName, str));
//Class> classiVar = ;
Object objectiVar = XposedHelpers.newInstance(
XposedHelpers.findClassIfExists("com.tencent.mm.modelmulti.h", MainXposed.classLoader),
wxId, strContent, 1);
//创建静态实例对象au.DF(),转换为com.tencent.mm.ab.o对象
Object objectG = XposedHelpers.callStaticMethod(
XposedHelpers.findClassIfExists("com.tencent.mm.model.av", MainXposed.classLoader),
"Pw");
//调用发消息方法
try {
XposedHelpers.callMethod(objectG, "a", objectiVar, 0);
XposedBridge.log("发送消息成功-----");
} catch (Exception e) {
XposedBridge.log("发送消息失败XXXXXXX");
XposedBridge.log(e.getMessage());
}
}
public static void sendImage(final String wxId, String imgPath) {
Class findClass = XposedHelpers.findClass("com.tencent.mm.av.n", MainXposed.wxLpparam.classLoader);
Object obj = XposedHelpers.callStaticMethod(findClass, "alL");
if (obj == null) {
obj = XposedHelpers.newInstance(findClass);
}
XposedHelpers.callMethod(obj, "a", 0, 0, imgPath, wxId, Boolean.TRUE);
final ArrayList arrayList = new ArrayList<>();
arrayList.add(imgPath);
final Object finalObj = obj;
XposedHelpers.callMethod(finalObj,"b", arrayList, Boolean.TRUE, 0, 0, wxId);
//-------------------------------------------------------------------------------------------------------------------------
// paramClassLoader, WechatEntity paramWechatEntity, paramString1, paramString2, paramString3,
// Object[] arrayOfObject = new Object[2];
// String sendPic_class_1 = "com.tencent.mm.av.n";
// String sendPic_class_2 = "com.tencent.mm.ae.n";
// String sendPic_field_1 = "hzX";
// String sendPic_method_1 = "a";
//
// arrayOfObject[0] = XposedHelpers.newInstance(XposedHelpers.findClass(sendPic_class_1, MainXposed.classLoader),
// new Object[]{Integer.valueOf(3), "", wxId, imgPath,
// Integer.valueOf(1), null, Integer.valueOf(1), "", "", Boolean.valueOf(true), Integer.valueOf(2130837923)});
//
// arrayOfObject[1] = Integer.valueOf(1);
//
// XposedHelpers.callMethod(XposedHelpers.getStaticObjectField(
// XposedHelpers.findClass(sendPic_class_2, MainXposed.classLoader), sendPic_field_1), sendPic_method_1, arrayOfObject);
//
}
/**
* 发送文件方法
*
* @param wxId 对方用户ID
* @param filePath 文件路径
*/
public static void sendFile(String wxId, String filePath) {
File file = new File(filePath);
ClassLoader cl = MainXposed.classLoader;
Class IMediaObject = XposedHelpers.findClass("com.tencent.mm.opensdk.modelmsg.WXMediaMessage$IMediaObject", cl);
Class fileObjectClz = XposedHelpers.findClass("com.tencent.mm.opensdk.modelmsg.WXFileObject", cl);
Class mediaMessageClz = XposedHelpers.findClass("com.tencent.mm.opensdk.modelmsg.WXMediaMessage", cl);
Class mediaMsgSenderClz = XposedHelpers.findClass("com.tencent.mm.pluginsdk.model.app.l", cl);
if (file.exists() && file.isFile()) {
Object fileObject = XposedHelpers.newInstance(fileObjectClz);
XposedHelpers.callMethod(fileObject, "setFilePath", filePath);
Object mediaObject = XposedHelpers.newInstance(mediaMessageClz);
XposedHelpers.setObjectField(mediaObject, "mediaObject", IMediaObject.cast(fileObject));
XposedHelpers.setObjectField(mediaObject, "title", file.getName());
XposedHelpers.setObjectField(mediaObject, "description", getFileDesc(file.length()));
XposedHelpers.callStaticMethod(mediaMsgSenderClz, "a", mediaObject, "", "", wxId, 4, null);
XposedBridge.log("发送完毕==" + filePath);
} else {
Log.e("文件不存在,无法发送 %s", filePath);
}
}
/**
* 获取文件大小
*
* @param filesize
* @return
*/
private static String getFileDesc(long filesize) {
long j = filesize;
if ((j >> 30) > 0) {
// GB
return (((double) Math.round((((double) j) * 10.0d) / 1.073741824E9d)) / 10.0d) + " GB";
}
if ((j >> 20) > 0) {
// MB
return (((double) Math.round((((double) j) * 10.0d) / 1048576.0d)) / 10.0d) + " MB";
}
if ((j >> 9) <= 0) {
return j + " B";
}
return (((double) Math.round((((double) j) * 10.0d) / 1024.0d)) / 10.0d) + " KB";
}
}
有没有大佬指导一下?
微信android发送图片,[求助]Xposed微信发送图片方法相关推荐
- 微信 android兼容性问题怎么解决方案,微信7.0版本与EMUI系统兼容性问题,华为官方是这样回复的...
目前,微信 7.0 版本已经逐步在各大 Android 手机上上线,然而近日华为官方在花粉俱乐部中发布了一则<说明>,称微信 7.0 在 EMUI 上出现了一些兼容性问题,目前已经推动腾讯 ...
- 微信 android兼容性问题怎么解决方案,微信小程序兼容性问题
本文我们来谈谈微信小程序系统兼容性的那些坑. 微信小程序兼容性问题 微信小程序发布一周多了,兼容性问题,特别是 Android 平台兼容性问题特别严重.据我观察,好多小程序掉到兼容性的坑里.掉坑里不要 ...
- 微信 Android design 代码,[教程]让微信界面更加 Android Design
在早期 Android 的生态链还未完全建立起来的时候,很多 Android 软件基本上都是照搬 iOS 上面的那一套拟物风格,包括界面.样式.交互等,如此生搬硬套使得很多 Android 软件体验不 ...
- 微信android字体颜色,如何用微信打出颜色各异的字
如何用微信打出颜色各异的字 看了是不是觉得特别神奇?小编和别人聊微信时候的字居然是彩色的!好啦,不用羡慕,小编现在来教你怎么在微信里输入彩色的文字,方法其实很简单! 首先打开聊天对话窗口,点击你准备要 ...
- 微信Android如何实现计步数,微信运动步数是怎样计算的?终于有人研究出来了......
原标题:微信运动步数是怎样计算的?终于有人研究出来了... 微信运动每天都记录着你走路的步数,他会形成榜单,走的多收到很多赞,走的少则无人关注,如果你走到第一,你的照片将霸占排行榜封面. 所以一段时间 ...
- 计算机无法打印图片,求助!电脑不能打印图片,图形
当显示 Memory is low. ( 内存不足 ) Press ( 按下 ) 时,说明多功能一体机内存几乎完全用尽. 这样的面板信息一般发生在传真的时候,此时可以清除内存中的传真. 删除内存中的传 ...
- 微信 Android 模块化架构重构实践
微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的 ...
- 反编译apk修改v7包_微信Android SDK反编译还原源码 进行修改重新编译
一.介绍 微信sdk,做开发的都应该用过,微信分享.支付,都要用到的. 接下来,跟着我,把他的sdk源码还原为一个module可编译的形式. 用到的工具: jadx: 这是一款反编译apk和jar包的 ...
- 微信Android模块化架构重构实践
微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的 ...
最新文章
- 批量 kill mysql 中运行时间长的sql
- [Hadoop][Zookeeper]Cluster + HA
- 'cross-env' 不是内部或外部命令,也不是可运行的程序
- TLD(Tracking-Learning-Detection)学习与源码理解之(五)
- POJ 1150 The Last Non-zero Digit 数论+容斥
- C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP),多多宜善
- Mac操作指南:废纸篓里的文件无法清除如何解决?
- python对列表进行去重_Python编程常用技巧–持续更新
- excel数据处理一:巧妙使用openpyxl提取、筛选数据
- 网络就好似一个个树洞
- Visual Studio Code,一款功能强大且轻巧的免费代码集成编辑器介绍
- AWS中国 Kubernetes 搭建指南
- 手把手教你写一个Matlab App(一)
- spring容器的懒加载lazy-init设置
- 李宏毅Transformer
- JAVA外卖项目第一天 技术选型和包结构
- 【笔记】嵌入式C语言随堂笔记
- UE4学习(一)C++编程官方文档解读
- social network社交网络资料汇总
- Vue.js学习笔记 2022 04 17
热门文章
- 正则引擎入门——基于虚拟机的正则匹配(二)
- 教你自由裁切每段视频的画面,横竖屏都支持
- 【教程】 .Net环境和开发工具Visual Studio的安装
- Jackson详情分析:用于诊断和疾病监测的血清学检测
- SHT30温湿度传感器应用笔记
- JAVA毕业设计Vue.js网上书城管理系统设计与实现服务端计算机源码+lw文档+系统+调试部署+数据库
- 将本地数据倒入到Hive
- uc/OS-II操作系统移植:uc/OS-II移植到STM32流程(文章末尾附实例)
- STM8S开发入门之使用EWSTM8(IAR STM8S)新建工程点亮一个LED(基于STM8S001J3)
- 护眼台灯哪个品牌更好?2022年最值得入手的护眼台灯