Создайте сокет в коде Android (не в приложении Android), получая Отказано в Разрешении

Я пытаюсь открыть сокет в исходном коде Android. В частности, сейчас я нахожусь в файле DisplayDevice.cpp, но расположение кода сокета может измениться. Прямо сейчас после того, как я:

int fd = socket(AF_INET, SOCK_STREAM, 0);

fd возвращается как -1, и когда я проверяю сообщение об ошибке, оно отображается как «Отказано в доступе». Я много раз об этом разбирался, большинство ответов включают добавление интернет-разрешения в файл AndroidManifest. Это будет не работать для меня, как код, который я добавляю, находится внутри исходного кода Android.

Мне было интересно, если есть способ обойти отказано в разрешении. Или, если есть лучший способ сделать это / использовать другой тип сокета (сейчас я использую сокеты из

Спасибо.

2

Решение

Вполне естественно, что вы получаете Permission Denied ошибка. Это просто потому, что у вас нет правильного разрешения :). Проверять, выписываться модель разрешения Android!

Представьте себе сценарий, подобный обычному пользователю в операционной системе, и вы пишете программу, которая пытается открыть сокет, подобный вашему. Скорее всего, вы столкнетесь с той же проблемой, в зависимости от того, где будет создан именованный сокет.

Как вы пытаетесь создать сокет в DisplayDevice.cpp (компиляция Android из источника), вы можете быть заинтересованы в компиляции источника в качестве суперпользователя. Вот это решение от м-RIC (Я никогда не проверял это).

Вот некоторые полезные указатели / ссылки в аналогичном направлении, которые я нашел полезными во время исследования этой увлекательной темы:

  1. https://android.stackexchange.com/questions/18857/how-to-build-compile-su-from-source
  2. команда execv => http://code.google.com/p/superuser/source/browse/trunk/su/su.c?r=2#169
  3. https://github.com/ChainsDD/su-binary
  4. http://e2e.ti.com/support/omap/f/849/p/178679/648158.aspx#648158
  5. Видео из Google I / O 2011 http://www.youtube.com/watch?v=5yorhsSPFG4
2

Другие решения

Других решений пока нет …