2

我正在尝试在 android 源代码中打开一个套接字。具体来说,现在我在DisplayDevice.cpp文件中,但是socket代码的位置可能会改变。现在在我这样做之后:

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

fd 被返回为 -1,当我检查错误消息时,它被列为 Permission Denied。为此,我环顾四周,大多数答案都涉及将互联网权限添加到 AndroidManifest 文件中。这对我不起作用,因为我添加的代码在 android 源代码中。

我想知道是否有办法绕过被拒绝的权限。或者,如果有更好的方法来做到这一点/使用不同类型的套接字(现在我正在使用来自

谢谢你。

4

1 回答 1

2

你得到Permission Denied错误是很自然的。这仅仅是因为您没有正确的权限:)。查看android 权限模型

想象一个像操作系统中的普通用户这样的场景,你编写一个程序试图打开一个像你这样的套接字。您很可能会面临同样的问题,具体取决于要创建命名套接字的位置。

当您尝试在DisplayDevice.cpp中创建套接字(从源代码编译 android)时,您可能有兴趣以超级用户身份编译源代码。m-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
于 2013-03-08T23:23:22.357 回答