Итак, я создаю приложение для копирования всех моих сообщений (И ммс, С вложениями) из 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.
«Когда я все еще пытаюсь его использовать, компилятор жалуется» - Что там написано?
@StephenC, компилятор говорит, что методов не существует




Аннотация javadoc @hide должна скрывать метод только от javadocs. Однако в документации Android указано следующее:
In general, apps should only use the officially documented parts of the classes in the SDK. In particular, this means that you should not plan to access methods or fields that are not listed in the SDK when you interact with a class via semantics such as reflection.
Затем объясняется, что рефлексивный и другой доступ к внутренним API-интерфейсам может быть заблокирован различными способами.
Возможно, эти методы были удалены либо путем изменения исходного кода, из которого были созданы файлы ".class", либо путем некоторых манипуляций с байт-кодом после компиляции. Это было сделано, чтобы вы случайно не написали код, зависящий от внутренних методов API.
Если методы отсутствуют (по какой-либо причине) в интерфейсах, которые вы скомпилировали, вам не следует пробовать другие способы доступа. Даже если вам это удастся, это может вызвать проблемы с переносимостью в будущем.
Методы, помеченные @hide, не являются частью общедоступного Android API и не предназначены для использования разработчиками. Они часто являются внутренними только для класса и могут изменяться в разных версиях Android.
Вы можете вызывать эти методы через отражение, но делайте это с осторожностью, так как они могут быть изменены или удалены. Вы всегда должны проверять, когда метод появился в файле .java, когда изменилась подпись и была ли / когда она была удалена. Затем при необходимости заверните свой код в проверки версии Android.
В порядке. Я только что заметил, что у этих методов есть атрибут
@hideв java-doc. Могу я еще как-нибудь их использовать?