Android Скрытая совместимость API - PullRequest
0 голосов
/ 26 марта 2020

Я Android разработчик фреймворка. Я пытаюсь перенести мои настройки rnet APK (системное приложение) с Android O на Android Q. скрытые API , которые я использовал из EthernetManager. java изменены в Android Q. Таким образом, я изменил свои коды для запуска моего приложения на обоих устройствах (Android O и Android Q).

@TargetApi(Build.VERSION_CODES.O)
private IpConfiguration getConfiguration() {

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
        return mEthernetManager.getConfiguration();
    } else {
        String[] availIntf = mEthernetManager.getAvailableInterfaces();
        if (availIntf.length > 0) {
            mIntfName = availIntf[0];
            if (mDebug) android.util.Log.d(TAG, "1st available inteface: " + availIntf[0]);
            return mEthernetManager.getConfiguration(availIntf[0]);
        }
    }

    return null;
}

Но я все еще получал сообщения об ошибках при сборке на AOSP на основе Android 10:

 error: method getConfiguration in class EthernetManager cannot be applied to given types;
            return mEthernetManager.getConfiguration();
                                   ^
  required: String
  found: no arguments
  reason: actual and formal argument lists differ in length

Моя цель - использовать этот код для сборки на другом AOSP проекты (на основе O и Q) и успешно выполняются на устройствах с Android O или Q. Эта проблема касается совместимости API, но эти API скрыты. Как я могу это исправить? Большое спасибо.

...