Как вы можете исправить и заменить основные классы Android API? - PullRequest
0 голосов
/ 03 сентября 2018

Допустим, у меня есть приложение Android, созданное с использованием проекта Android Studio, которое опирается на основной класс Android; android.text.Selection. Одна из функций, removeSelection, помечена как причина сбоев. Я подозреваю, что это из-за сторонних клавиатур. Я хотел бы изменить эту функцию, чтобы попытаться обойти проблему, изменив с;

/**
 * Remove the selection or cursor, if any, from the text.
 */
public static final void removeSelection(Spannable text) {
    text.removeSpan(SELECTION_START, Spanned.SPAN_INTERMEDIATE);
    text.removeSpan(SELECTION_END);
    removeMemory(text);
}

до *; 1006 *

/**
 * Remove the selection or cursor, if any, from the text.
 */
public static final void removeSelection(Spannable text) {
    Log.i("Test", "Method replaced.");
    setSelection(text, 0, 0);
}

Я могу получить источник для класса; https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/android/text/Selection.java. Я также знаю, что вы можете изменить путь к классу в Java, чтобы использовать измененную версию класса; https://www.sourceallies.com/2010/02/replacing-and-patching-java-application-and-core-classes/. Сам класс находится в основных android.jar зависимостях.

Как я могу настроить этот метод, включить его в свой проект и сделать так, чтобы мое приложение предпочло модифицированную версию?

...