如何访问com.android.internal.telephony.gsm.GsmSmsDispatcher实例?

时间:2011-08-10 16:24:33

标签: android reflection

我需要访问com.android.internal.telephony.gsm.GsmSmsDispatcher的 sendRawPdu 方法。

我做了一些研究,发现 GSMPhone 类包含 GsmSmsDispatcher 实例。我希望从 PhoneFactory 获取 GSMPhone 实例,但它似乎未初始化(它的静态变量是 null )。

Android API版本> = 8。

1 个答案:

答案 0 :(得分:4)

您无法使用反射访问Android的内部类。 Android中的每个应用程序都使用自己的Dalvik VM实例在自己的进程中运行。在一个进程中加载​​的类对另一个进程不可见。因此,当您尝试从PhoneFactory访问静态变量时,最终会使用未初始化的变量加载PhoneFactory类。

您最好的做法是使用Android API做任何想做的事情。有几种方法可以访问某些私有Android服务,但它不会让你太过分。 SMS唯一相关的是 isms 服务。您可以在com.android.internal.telephony包中的ISms.aidl文件中查看其中可用的方法。