android-Xposed:如何获取挂钩的应用程序的上下文?

android-Xposed:如何获取挂钩的应用程序的上下文?,第1张

概述像标题一样,我想挂接第三个应用程序,并可以从第三个应用程序的活动中调用我的应用程序活动,所以我想获取第三个应用程序的上下文,我该怎么办?第三个应用程序的包是com.ss.android.gallery.heavy,我的项目的包是com.example.hao.hookstartupinterfacetest;我的XposedModule.java(M

像标题一样,我想挂接第三个应用程序,并可以从第三个应用程序的活动中调用我的应用程序活动,所以我想获取第三个应用程序的上下文,我该怎么办?

第三个应用程序的包是com.ss.android.gallery.heavy,我的项目的包是com.example.hao.hookstartupinterfacetest;

我的Xposed Module.java(MainActivity是我的项目的活动)

XposedHelpers.findAndHookMethod("com.ss.androID.gallery.heavy.activity.SplashActivity",                loadPackageParam.classLoader, "getMainIntent", new XC_MethodReplacement() {                    @OverrIDe                    protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {                        Context context = (Activity)methodHookParam.getResult();                        return new Intent(context, MainActivity.class);                    }                });

SplashActivity.class(在第三个应用程序中,MainActivity在这里属于第三个应用程序.)

   public class SplashActivity extends BaseSplashActivity{       protected Intent getMainIntent(){           return new Intent(this, MainActivity.class);       }   }

错误

01-18 20:38:23.669 4730-4730/com.ss.androID.gallery.heavy E/AndroIDRuntime: FATAL EXCEPTION: main    Process: com.ss.androID.gallery.heavy, PID: 4730    androID.content.ActivityNotFoundException: Unable to find explicit activity class {com.ss.androID.gallery.heavy/com.example.hao.hookstartupinterfacetest.MainActivity}; have you declared this activity in your AndroIDManifest.xml?        at androID.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1777)        at androID.app.Instrumentation.execStartActivity(Instrumentation.java:1501)        at androID.app.Activity.startActivityForResult(Activity.java:3745)        at androID.app.Activity.startActivityForResult(Activity.java:3706)        at androID.app.Activity.startActivity(Activity.java:4016)        at androID.app.Activity.startActivity(Activity.java:3984)        at com.ss.androID.gallery.base.activity.BaseSplashActivity.goMainActivity(BaseSplashActivity.java:61)        at com.ss.androID.gallery.base.activity.BaseSplashActivity.accessIntent intent = new Intent();intent.setClassname(    // Your app's package name    "com.example.hao.hookstartupinterfacetest",    // The full class name of the activity you want to start    "com.example.hao.hookstartupinterfacetest.MainActivity");return intent;0(BaseSplashActivity.java:17)        at com.ss.androID.gallery.base.activity.BaseSplashActivity.run(BaseSplashActivity.java:76)        at androID.os.Handler.handleCallback(Handler.java:739)        at androID.os.Handler.dispatchMessage(Handler.java:95)        at androID.os.Looper.loop(Looper.java:135)        at androID.app.ActivityThread.main(ActivityThread.java:5254)        at java.lang.reflect.Method.invoke(Native Method)        at java.lang.reflect.Method.invoke(Method.java:372)        at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)        at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:698)        at de.robv.androID.xposed.XposedBrIDge.main(XposedBrIDge.java:102)

解决方法:

您正在尝试直接使用挂钩应用程序的上下文来启动应用程序的活动,由于该活动实际上不是挂钩应用程序的一部分,因此该 *** 作不起作用(因此出现“未在AndroIDManifest.xml中定义”错误).创建意图时,必须明确指定应用程序包和类的全名:

您还应该在AndroIDManifest.xml内将MainActivity的androID:exported属性设置为true,以便可以通过挂钩的应用程序启动它.

另外,Context context =(Activity)methodHookParam.getResult();应该可能是Context context =(Activity)methodHookParam.thisObject ;,尽管您实际上根本不需要使用此方法.

总结

以上是内存溢出为你收集整理的android-Xposed:如何获取挂钩的应用程序的上下文?全部内容,希望文章能够帮你解决android-Xposed:如何获取挂钩的应用程序的上下文?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存