Изменить оператора сети с помощью приложения для Android - PullRequest
6 голосов
/ 12 мая 2011

Я пытаюсь разработать приложение для Android, которое отображает уровень сигнала различных сетевых операторов на карте.Проблема в том, что единственный способ сменить оператора сети - сделать это вручную.

Есть идеи, как получить эту информацию, не меняя ее вручную?Я думаю, что для этого есть внутренние / частные классы Android.

1 Ответ

1 голос
/ 09 декабря 2011

Для этого вам потребуется использовать один или несколько внутренних API-интерфейсов Google. По умолчанию они недоступны для приложений Android по разным (обычно хорошим) причинам. Например, API для включения и выключения привязки и его настройки не является общедоступным API и не может вызываться напрямую сторонними приложениями.

Вам нужно будет сделать две вещи. Во-первых, загрузите исходный код Android и найдите API, которые вам нужны, чтобы перечислить и сменить оператора. Вы можете найти исходный код Android и загрузить инструкции здесь .

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

Имейте в виду, что лучше всего это делать на устройстве под брендом Nexus, так как на нем есть ванильный код Android. Моя (успешная) попытка написать виджет домашнего экрана для включения и выключения модема работала на Nexus One, но не работала на Samsung Galaxy Tab P1000. Устройство поддерживало привязку, но Samsung изменила эту часть ОС в рамках своих усилий по переносу.

...