如何在c ++上使用android toolchain获取包名?

时间:2016-04-24 14:18:10

标签: android c++ sockets toolchain package-name

我有一个尝试从另一个进程获取包名称的进程。 我正在使用C ++代码并使用Android工具链进行编译。 我有它的套接字fd和ip地址,但是,我没有在api中找到一个函数,它将返回一个包含包名的字符串。 我有套接字fd和地址,如果它有帮助:

uid_t GetSocketID(int sockfd)
{
    int err;
    socklen_t len;
    struct sockaddr_in addr;
    len = sizeof(addr);
    int res = getpeername(sockfd, (struct sockaddr*)&addr, &len);

    if (res < 0)
    {
        err = errno;
        return -1;
    }

    int iSockIp = addr.sin_addr.s_addr;
    int iSockPort = ntohs(addr.sin_port);
    int iUid = -1;

    if (iSockIp == 0 || iSockPort == 0)
    {
            return -1;

    }
}

示例来自: https://github.com/android/platform_system_core/blob/master/libcutils/qtaguid.c

有谁知道如何获得包名?

谢谢!

1 个答案:

答案 0 :(得分:0)

分3步完成:

  • 使用netstat从套接字
  • 中查找进程
  • 使用ps从流程信息中查找可执行文件
  • 在应用的根目录中搜索AndroidManifest.xml,找到拥有可执行文件的APK。