Java 修改android内部类/呼叫处理

Java 修改android内部类/呼叫处理,java,android,Java,Android,由于Android的全部内容都是开源的,所以我考虑对com.Android.internal.telephony包中的几个内部类进行一些小的修改,当然,如果我的应用程序能够使用修改过的类,我会很高兴。我在考虑在运行时使用反射或其他未知的java技巧将类替换为原始类:D…也许我想做的是不可能的:(我不知道这就是为什么我要问这个问题 注意:内部类的更改不会以任何方式改变它们的功能,更多的是扩展它们的功能,这样即使其他应用程序使用修改过的版本,也不会破坏它们 我为什么要这么做?我想实现什么? 我想修改

由于Android的全部内容都是开源的,所以我考虑对com.Android.internal.telephony包中的几个内部类进行一些小的修改,当然,如果我的应用程序能够使用修改过的类,我会很高兴。我在考虑在运行时使用反射或其他未知的java技巧将类替换为原始类:D…也许我想做的是不可能的:(我不知道这就是为什么我要问这个问题

注意:内部类的更改不会以任何方式改变它们的功能,更多的是扩展它们的功能,这样即使其他应用程序使用修改过的版本,也不会破坏它们

我为什么要这么做?我想实现什么? 我想修改com.android.internal.telephony.gsm.CallTracker内部类,这样我就可以进行适当的呼叫处理(呼叫阻塞等) 也许如果你知道如何做我想做的事情的另一种方法,我想听听:)

注2:我知道处理android.intent.action.PHONE_STATE,action时的方法,但在播放此操作时,要做出反应实在太晚了。我真的在寻找一个更好的解决方案,即使这个解决方案涉及丑陋的黑客:)


一如既往地感谢您的回复

您不能这样做:)我让您想象一下,如果允许任何应用程序自由替换系统的核心部件,将会发生什么。您可以下载Android源代码并对其进行修改,还可以将修改上传到手机上(如果您的手机已根目录/解锁),但您无法通过简单的应用程序应用这些修改。

在加载类后更改类功能(方法、字节码)是不可能的。反射/调用不影响类,只影响静态字段和实例

您正在寻找一种方法来添加其他方法或更改正在运行的系统的现有方法,因为当您的“黑客”应用程序执行时,可能已经加载了相关的类

我看到的唯一技术方法是提前更改类并部署修改后的系统。我只是忽略了目前可能存在的许可问题和安全问题。但即使采用这种方式,您的软件也将依赖于自定义操作系统,即某个android版本的分支,与官方更新断开连接,并且您必须要求客户安装具有未知功能的自定义操作系统



旁注-我很高兴,这真的是不可能的,否则我的手机里已经充满了木马、病毒等

Romain是正确的,您不能也不应该尝试更改现有的系统类

也就是说,通过创建处理电话呼叫的拨号程序应用程序的替代程序,可以按照您的建议实现呼叫屏蔽


具体来说,这个意图应该由你的应用程序来处理,然后你的应用程序可以实现一个类似拨号器的界面,或者显式地打开拨号器应用程序(或任何其他呼叫管理器)。

有很多方法可以破解安卓框架类,这取决于你想破解哪些

  • 你必须扩展你想要破解的类
  • 如果要重写包私有方法和/或访问包私有变量,可以将类放在同一个包中
  • 您可以使用反射

  • 实际上,我必须这样做才能解决bug。罗曼在某种程度上是正确的。这完全取决于你试图破解的代码的结构。你肯定不能攻击Android内部,但你可以攻击其他框架类,如Activity、View等。

    因此,如果不可能,我就无法进行正确的呼叫处理?这让我很难过:(