Проблемы со скриптом для Android - PullRequest
5 голосов
/ 27 июня 2011

У меня есть проблема, которая мучила меня в последние несколько дней. Я хотел бы написать скрипт Android sh, который выполняет следующие действия (чтобы помочь мне синхронизировать музыку, изображения и т. Д.):

1) Включите Wi-Fi (Wi-Fi по умолчанию отключен для экономии энергии)

2) Проверьте, находится ли мое wifi соединение в зоне действия (давайте назовем его myWifi)

3) Если myWifi находится за пределами диапазона, отключите wifi, если он находится за пределами диапазона, подключите и запустите некоторое программное обеспечение для синхронизации

Теперь, чтобы включить / отключить Wi-Fi, я использую следующую команду, для которой требуется root:

svc wifi enable / disable

Для поиска доступных подключений Wi-Fi я использую следующую команду:

iwlist eth0 scan

Самое странное, что iwlist eth0 scan будет работать только в том случае, если я НЕ вошел в систему как root (мне очень любопытно, почему это так, если кто-нибудь что-нибудь знает?), Запустив его, пока root вернет:

eth0: Interface doesn't support scanning : Invalid argument

, но если запустить его, не входя в систему как root, то даст мне необходимую информацию. Я пробовал разные подходы, чтобы обойти эту проблему. Наиболее очевидным является вход в систему в качестве стандартного пользователя в системе Android непосредственно перед вызовом команды iwlist:

su -c app_1

Однако любая команда, которая включает su, вернет permission denied даже при вызове его как root, и, поскольку sudo не существует в Android, я чувствую себя довольно растерянным. Я также попробовал обходной путь, включающий разделение скрипта на две части и попытку запуска первого как root, а второго как не root (пользователь по умолчанию в Android i app_1), но это только задержит проблему ...

Если у кого-то есть ответ на вопрос, как обойти эту пользовательскую проблему или как использовать iwlist eth0 scan (или другую команду, которая делает то же самое) при входе в систему как root, я был бы очень признателен.

Спасибо.

1 Ответ

0 голосов
/ 23 августа 2011

Согласно man iwlist обычные пользователи могут видеть только некоторые оставшиеся результаты сканирования.Чтобы начать новое сканирование с правами root, сначала необходимо запустить интерфейс (после запуска wifi):

ifconfig wlan0 up
...