Libxposed API 101: «невозможно найти символ» для getModuleContext(), несмотря на расширение XposedModuleJAVA

Программисты JAVA общаются здесь
Anonymous
Libxposed API 101: «невозможно найти символ» для getModuleContext(), несмотря на расширение XposedModule

Сообщение Anonymous »

Предлагаемый ответ:
Заголовок: используйте getModuleApplicationInfo() вместо getModuleContext() в API 101.
В API 101 libxposed метод getModuleContext() действительно устарел или удален из базового класса XposedModule. Чтобы получить доступ к ресурсам вашего модуля (например, strings.xml), вам следует использовать getModuleApplicationInfo() для ручной инициализации ваших ресурсов.
Вот простой способ справиться с этим в API 101:

Код: Выделить всё

@Override
public void onPackageReady(@NonNull PackageReadyParam param) {
if (!param.getPackageName().equals("com.android.systemui")) return;

try {
// 1. Get ApplicationInfo of your own module
ApplicationInfo moduleInfo = getModuleApplicationInfo();

// 2. Initialize AssetManager and add your APK path
AssetManager assets = AssetManager.class.newInstance();
Method addAssetPath = AssetManager.class.getMethod("addAssetPath", String.class);
addAssetPath.invoke(assets, moduleInfo.sourceDir);

// 3. Create Resources object using system metrics
Resources systemRes = Resources.getSystem();
mRes = new Resources(assets, systemRes.getDisplayMetrics(), systemRes.getConfiguration());

// Now you can use mRes.getString() or mRes.getIdentifier()
// to access your module's localized strings.
} catch (Throwable t) {
Log.e("Back2Kill", "Failed to load module resources: " + t.getMessage());
}
}
Почему это происходит:
Новый API ориентирован на более «простой» подход для лучшей совместимости между различными версиями Android и загрузчиками Xposed (например, LSPosed). Загружая AssetManager вручную, вы гарантируете, что ваш модуль останется независимым от контекста целевого приложения.

Подробнее: https://stackoverflow.com/questions/799 ... -extending

Вернуться в «JAVA»