【问题标题】:Create a socket in android code(not in android application) getting Permission Denied在 android 代码中创建一个套接字(不在 android 应用程序中)获得 Permission Denied
【发布时间】:2013-03-08 20:04:29
【问题描述】:

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

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

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

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

的套接字

谢谢。

【问题讨论】:

  • 啊,您可能想将此标记为 C 或 C++ 问题。这几乎是 BSD 风格的套接字

标签: android c++ sockets android-emulator


【解决方案1】:

很自然会出现Permission Denied 错误。这仅仅是因为您没有正确的权限:)。查看android permission model

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

当您尝试在DisplayDevice.cpp 中创建套接字(从源代码编译android)时,您可能有兴趣以超级用户身份编译源代码。 Herem-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

【讨论】:

  • 谢谢。这确实帮助我朝着正确的方向开始。我仍在寻找更明确的回应,因为我对 m-ric 解决方案中到底发生了什么以及应该发生什么感到困惑。尽管如此,这是非常有用的信息,有助于继续前进。
猜你喜欢
  • 2016-06-20
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多