Как использовать методы Android с ограниченным API ¿отражения?

Я занимаюсь разработкой приложения с системными привилегиями и хочу использовать методы intallPackage() и deletePackage(), которых нет в обычном API. Я понятия не имею, как использовать рефлексию, чтобы сделать эти методы доступными. Кто-нибудь знает, как я могу получить доступ к этим методам из кода? Как сделать их доступными в Android SDK? Любые учебники об этом?

1 ответ

Решение

Как вы предложили, это можно сделать с помощью размышлений. Чтобы избежать каких-либо изменений в SDK, вызывающих проблемы, рекомендуется сначала проверить методы перед их вызовом, чтобы убедиться, что они существуют и имеют правильную сигнатуру метода.

Если вы захватите исходный код Android, вы сможете найти все скрытые методы, они помечены @hide аннотаций.

Редактировать:

Вот (неполный) пример, включающий программную точку доступа, которая должна дать вам некоторые подсказки:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Method method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
method.invoke(wifiManager, config, true);

По сути, получить Method и вызвать его.

Другие вопросы по тегам