在android中使用DatagramPacket跟踪应用程序ID或包名称

问题描述 投票:0回答:1

我打开一个套接字并跟踪 Android 应用程序中的网络调用。目前,我可以使用

DatagramPacket
类查看传入网络流量的主机名和 IP 地址。是否可以使用它获得
application id
package name
?或者是否可以从 DNSResolver 中的 IPPacket 获取
application ID
package name

android android-networking android-vpn-service
1个回答
0
投票

经过长时间的搜索和阅读Android相关网络的文档,我找到了获取操作系统分配的应用程序ID的解决方案。通过这个ID可以找到网络数据包的来源。

ID 是一个整数,在比较 ID 之前,使用

PackageManager
获取操作系统分配的应用程序 ID 非常重要。

val local = InetSocketAddress(sourceHostAddress, sourcePort)
val remote = InetSocketAddress(destinationHostAddress, destinationPort)
val connectivityManager = instance.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager;
val uId = connectivityManager.getConnectionOwnerUid(protocol, local, remote);

协议 TCP = 6 UDP = 17

© www.soinside.com 2019 - 2024. All rights reserved.