Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓&x27;s反编译的.class文件don';t显示对应的.java文件的所有方法_Java_Android_Android Studio_Smsmanager - Fatal编程技术网

安卓&x27;s反编译的.class文件don';t显示对应的.java文件的所有方法

安卓&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

因此,我正在构建一个应用程序,将我的所有信息(以及彩信,以及附件)从iOS(iTunes备份)复制到Android Pie(OxygenOS)

我浏览了Android的文件,发现有两种方法:

  • importTextMessage(…)
  • importMultimediaMessage(…)
他们似乎就是我要找的人,但是:

  • 它们不会出现在反编译的
    smsmsmanager.class
    文件中

  • 当我仍然尝试使用它时,编译器会抱怨
  • 最后,它们没有记录在案
所以,问题。为什么它们出现在
smsmsmanager.java
中,而不出现在
SmsManager.class
(jetbrains反编译器)中?为什么没有记录?如何使用这些方法

编辑:我在OnePlus 6T上成功还原了备份。如果您想要一个工作项目,请参见此处

  • @hide
    javadoc注释应该只对javadoc隐藏方法。但是,Android文档说明了这一点:

    一般来说,应用程序应该只使用SDK中正式记录的类部分。特别是,这意味着您不应该计划在通过反射等语义与类交互时访问SDK中未列出的方法或字段

    然后,它继续解释,对内部API的反射访问和其他访问可能会被各种方式阻止

    资料来源:

  • 这些方法可能是通过修改生成“.class”文件的源代码或编译后的字节码操作而删除的。这样做是为了防止您意外地编写依赖于内部API方法的代码

  • 如果编译所针对的接口中不存在这些方法(无论出于何种原因),则不应该尝试其他访问方法。即使您成功了,这也可能在将来导致可移植性问题

  • @hide
    javadoc注释应该只对javadoc隐藏方法。但是,Android文档说明了这一点:

    一般来说,应用程序应该只使用SDK中正式记录的类部分。特别是,这意味着您不应该计划在通过反射等语义与类交互时访问SDK中未列出的方法或字段

    然后,它继续解释,对内部API的反射访问和其他访问可能会被各种方式阻止

    资料来源:

  • 这些方法可能是通过修改生成“.class”文件的源代码或编译后的字节码操作而删除的。这样做是为了防止您意外地编写依赖于内部API方法的代码

  • 如果编译所针对的接口中不存在这些方法(无论出于何种原因),则不应该尝试其他访问方法。即使您成功了,这也可能在将来导致可移植性问题


  • 带有@hide注释的方法不是公共Android API的一部分,也不是为开发人员设计的。它们通常只在类内部,并且在Android版本中可能会发生更改


    您可以通过反射调用这些方法,但要小心,因为它们可能会更改或被删除。您应该始终检查该方法何时出现在.java文件中、签名何时更改以及是否/何时被删除。然后在需要时将代码包装在Android版本检查中。

    带有@hide注释的方法不是公共Android API的一部分,也不是为开发人员设计的。它们通常只在类内部,并且在Android版本中可能会发生更改


    您可以通过反射调用这些方法,但要小心,因为它们可能会更改或被删除。您应该始终检查该方法何时出现在.java文件中、签名何时更改以及是否/何时被删除。然后在需要时将代码包装到Android版本检查中。

    Ok。我刚刚注意到这些方法在java文档中有
    @hide
    属性。我还能使用它们吗?“当我仍然试图使用它时,编译器会抱怨”-它说了什么?@StephenC,编译器说方法不存在。我刚刚注意到这些方法在java文档中有
    @hide
    属性。我还能用它们吗?“当我仍然试图使用它时,编译器会抱怨”-它说了什么?@StephenC,编译器说方法不存在