美文网首页
Xposed实时获取微信公众号推送

Xposed实时获取微信公众号推送

作者: 温浩天天天天天 | 来源:发表于2019-02-26 17:50 被阅读0次

    最近老板让研究一下xposed,用来实时抓取公众号文章推送,然后上报到自己服务器。我一个搞Java后端的怎么叫研究起安卓和xposed了呢!

    这篇文章主要是记录下踩过的坑,所以说不会很详细的讲解怎么实现功能,仅供自己记录一下,开始!

    PS:这里是第一次写东西,请见谅!

    资料:https://www.jianshu.com/p/61b6e384d1cf 

    https://www.colabug.com/5324975.html

    开始吧!

    1.打开AndroidStudio(Version3.2),新建一个工程,选择Empty Activity。

    2.打开AndroidManifest.xml,在application下添加

    <meta-data 

    android:name="xposedmodule"

    android:value="true" />

    <meta-data 

    android:name="xposeddescription"

    android:value="true" />

    <meta-data 

    android:name="xposedmodule"

    android:value="你猜猜" />

    <meta-data 

    android:name="xposedminversion"

    android:value="53" />

    最后AndroidManifest.xml如图所示,注意不要忘记箭头所知位置。

    3.build.gradle

    两种方式,第一种是手动下载XposedBridgeApi-82.jar ,拖放到“项目名称/app/libs/”里面(注意:不是网上说的单独建立lib文件夹!)然后右键“Add As Library” 自行添加这个jar包。而compileOnly ‘de.robv.android.xposed:api:82′和 compileOnly ‘de.robv.android.xposed:api:82:sources’这两句

    第二种就是我采用的这种,直接采用gradle仓库加载jar包。首先在build.gradle中dependencies下加入

    compileOnly 'de.robv.android.xposed:api:82'

    compileOnly 'de.robv.android.xposed:api:82:sources'

    很多文档到这就完了,但是很重要的一点,这是笔者卡了很久的问题,

    在build.gradle中加入下面这一行,这句代码是告诉AndroidStuido使用 jcenter 作为代码仓库,从这个仓库里远程寻找 de.robv.android.xposed:api:82 这个API

    repositories {

        jcenter()

    }

    4. 实现hook操作

    具体hook的功能,建议直接百度一下,xposed hello world,跟着教程做就行了,这里就不再阐述。

    5.拦截微信公众号

    这个地方主要的坑在于微信不同的版本的类总是改变。笔者采用的是微信6.67版本。因为笔者不是安卓开发,不是太懂反编译。只能下次熟悉后后续加上了。

    XposedHelpers.findAndHookMethod("com.tencent.mm.sdk.platformtools.ay", loadPackageParam.classLoader,"WA",String.class,new XC_MethodHook() {

    @Override

        protected void afterHookedMethod(MethodHookParam param)throws Throwable {

    Map<String,String> cond = (Map<String, String>) param.getResult();

    }

    });

    此处的坑在于微信这个方法的第一个参数是字符串,所以要传入String.class,要不然就会报错说没找到这个class.

    拿出来的map,就是我们需要的微信公众号推送的文章。

    6.HttpURLConnection

    按照我平时开发WEB准备用httpclient,结果网上一查(从Android6.0开始HttpClient已经被废弃从SDk中移除掉了),然后百度一下

    Android studio里在相应的module下的build.gradle中加入即可。 android {

            useLibrary 'org.apache.http.legacy'        }

    但是我自己加了以后执行好像并没有效果,后来才发现安卓访问要另开一个线程。。。(不要吐槽,笔者是Android小白)

    于是在主线程中加入

    new Thread(networkTask).start();

    RunnablenetworkTask =new Runnable() {

    @Override

        public void run() {

        HttpURLConnection具体请求。

    }

    };

    ps:这就是我作为一个Java后端在公司没有安卓的情况下搞Xposed,遇到的所有坑。如果有什么错误,请大家指出,哈哈哈!

    相关文章

      网友评论

          本文标题:Xposed实时获取微信公众号推送

          本文链接:https://www.haomeiwen.com/subject/qzczyqtx.html