【问题标题】:How do I set internet permissions for a "command line" C program in Android?如何在 Android 中为“命令行”C 程序设置 Internet 权限?
【发布时间】:2014-02-15 19:05:44
【问题描述】:

我基本上采用了这个https://code.google.com/p/android-fb2png/(有一些东西可以为Android构建纯C)并在main.c中放置一个tcp客户端,它使用通常的*NIX sys/socket.h东西连接到本地网络地址192.168.1.xxx:3000并发送"hello world"

我已经构建了程序并使用adb push 将它放在我的手机上。当我使用adb shell 以root 身份运行它时,我得到Connection refused 错误。我在192.168.1.xxx:3000 上的 tcp 服务器正在运行,并且电脑和手机都连接到同一个 WiFi 网络。

我认为这是 Android 阻止我的程序访问网络。问题是这不是一个“应用程序”并且没有 Java 代码或 android 清单。此外,这个程序永远不会分发 - 我只是在尝试。

虽然我知道<uses-permission android:name="android.permission.INTERNET" />,但我认为这不适用于这种情况。

如何为我的“命令行”程序启用网络?

【问题讨论】:

  • 连接被拒绝听起来像是服务器问题。防火墙?某种端口阻塞。我不认为那是 Android...
  • 你在运行wireshark吗?你应该运行wireshark来实际查看数据包是否进入网络......
  • 好主意!让我检查一下。
  • 我用另一台服务器替换了服务器,用节点编写,它似乎正在工作。这很奇怪,但这不是 Android 的错。我是个白痴:)
  • 我相信“shell”用户拥有大部分有用的权限,包括互联网,因此您无需root即可运行基本的网络命令。如果没有 root 设备,您无法真正授予额外的权限 - 应用程序从 zygote 启动,它具有完整的集合,并在拆分为新应用程序时根据需要删除权限。

标签: android c sockets android-ndk android-manifest


【解决方案1】:

事实证明这不是 Android 的错。这意味着这个问题是无效的。

评论说明一切。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 2021-09-05
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多