安卓&x27;s反编译的.class文件don';t显示对应的.java文件的所有方法
因此,我正在构建一个应用程序,将我的所有信息(以及彩信,以及附件)从iOS(iTunes备份)复制到Android Pie(OxygenOS) 我浏览了Android的文件,发现有两种方法:安卓&x27;s反编译的.class文件don';t显示对应的.java文件的所有方法,java,android,android-studio,smsmanager,Java,Android,Android Studio,Smsmanager,因此,我正在构建一个应用程序,将我的所有信息(以及彩信,以及附件)从iOS(iTunes备份)复制到Android Pie(OxygenOS) 我浏览了Android的文件,发现有两种方法: importTextMessage(…) importMultimediaMessage(…) 他们似乎就是我要找的人,但是: 它们不会出现在反编译的smsmsmanager.class文件中 当我仍然尝试使用它时,编译器会抱怨 最后,它们没有记录在案 所以,问题。为什么它们出现在smsmsmana
importTextMessage(…)
importMultimediaMessage(…)
- 它们不会出现在反编译的
文件中smsmsmanager.class
- 当我仍然尝试使用它时,编译器会抱怨
- 最后,它们没有记录在案
smsmsmanager.java
中,而不出现在SmsManager.class
(jetbrains反编译器)中?为什么没有记录?如何使用这些方法
编辑:我在OnePlus 6T上成功还原了备份。如果您想要一个工作项目,请参见此处
@hide
javadoc注释应该只对javadoc隐藏方法。但是,Android文档说明了这一点:
一般来说,应用程序应该只使用SDK中正式记录的类部分。特别是,这意味着您不应该计划在通过反射等语义与类交互时访问SDK中未列出的方法或字段
然后,它继续解释,对内部API的反射访问和其他访问可能会被各种方式阻止
资料来源:@hide
javadoc注释应该只对javadoc隐藏方法。但是,Android文档说明了这一点:
一般来说,应用程序应该只使用SDK中正式记录的类部分。特别是,这意味着您不应该计划在通过反射等语义与类交互时访问SDK中未列出的方法或字段
然后,它继续解释,对内部API的反射访问和其他访问可能会被各种方式阻止
资料来源:带有@hide注释的方法不是公共Android API的一部分,也不是为开发人员设计的。它们通常只在类内部,并且在Android版本中可能会发生更改
您可以通过反射调用这些方法,但要小心,因为它们可能会更改或被删除。您应该始终检查该方法何时出现在.java文件中、签名何时更改以及是否/何时被删除。然后在需要时将代码包装在Android版本检查中。带有@hide注释的方法不是公共Android API的一部分,也不是为开发人员设计的。它们通常只在类内部,并且在Android版本中可能会发生更改
您可以通过反射调用这些方法,但要小心,因为它们可能会更改或被删除。您应该始终检查该方法何时出现在.java文件中、签名何时更改以及是否/何时被删除。然后在需要时将代码包装到Android版本检查中。Ok。我刚刚注意到这些方法在java文档中有
@hide
属性。我还能使用它们吗?“当我仍然试图使用它时,编译器会抱怨”-它说了什么?@StephenC,编译器说方法不存在。我刚刚注意到这些方法在java文档中有@hide
属性。我还能用它们吗?“当我仍然试图使用它时,编译器会抱怨”-它说了什么?@StephenC,编译器说方法不存在