因此,我正在构建一个应用程序,将所有消息(AND彩信,带有附件)从iOS(iTunes备份)复制到Android Pie(OxygenOS)。
我浏览了Android的SmsManager.java文件,发现了两种方法:
importTextMessage(...)
importMultimediaMessage(...)
它们似乎是我要寻找的,但是:
SmsManager.class
文件中那么,问题。为什么它们出现在SmsManager.java
中而不出现在SmsManager.class
中(jetbrains反编译器)?他们为什么没有记录?如何使用这些方法?
编辑:我已在OnePlus 6T上成功还原了备份。如果您想要一个有效的项目,请参见https://github.com/let-aurn/iosmessagetoandroid。
答案 0 :(得分:1)
import numpy as np
from sklearn.model_selection import GroupShuffleSplit
X = np.array([0.1, 0.2, 2.2, 2.4, 2.3, 4.55, 5.8, 0.001])
y = np.array(["a", "b", "b", "b", "c", "c", "c", "a"])
groups = np.array([1, 1, 2, 2, 3, 3, 4, 4])
gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=0)
train, test = next(gss.split(X, y, groups=groups))
X_train, y_train = X[train], y[train]
X_test, y_test = X[test], y[test]
javadoc批注应仅对javadocs隐藏该方法。但是,Android文档指出:
通常,应用程序应仅使用SDK中类的正式记录部分。特别是,这意味着当您通过反射等语义与类进行交互时,您不应计划访问SDK中未列出的方法或字段。
然后继续说明,可能通过各种方式阻止对内部API的反射和其他访问。
有可能通过修改构建“ .class”文件的源代码或在编译后通过某些字节码操作来删除了这些方法。这样做是为了防止您偶然编写依赖于内部API方法的代码。
如果在您针对其进行编译的接口中没有该方法(出于某种原因),则您不应尝试其他访问方式。即使您成功了,将来也有可能引起可移植性问题。
答案 1 :(得分:1)
用@hide注释的方法不属于公共Android API的一部分,也不适合开发人员使用。它们通常仅在班级内部,并且在Android版本之间可能会发生变化。
您可以通过反射调用这些方法,但请谨慎操作,因为它们可能会更改或删除。您应该始终检查该方法何时出现在.java文件中,何时更改签名以及是否/何时删除该签名。然后将代码包装在需要的Android版本检查中。