我怎么能得到一些其他应用程序的uid,我知道它在android中的包名?

时间:2017-01-26 08:46:04

标签: android

我想在android中获取whatsapp的uid,我知道Whatsapp的包名。我怎样才能做到这一点?谢谢。

3 个答案:

答案 0 :(得分:6)

我使用以下代码找到了WhatsApp的uid

int uid = 0;
    try {
        uid = this.getPackageManager().getApplicationInfo("com.whatsapp", 0).uid;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }

答案 1 :(得分:1)

Android在安装时为每个应用程序分配一个UID(用户ID);与PID(进程ID)不同,它是瞬态的并且一直在不断变化,只要不重新安装应用程序,UID就保持不变。 UID应该对每个应用程序都是唯一的,除非应用程序显式请求与另一个应用程序共享用户标识(对此有安全限制,这两个应用程序必须使用相同的私钥签名,即来自同一个开发人员)。

这些应用声称显示应用程序的UID:

https://market.android.com/details?id=redfishandroid.appexplorer https://market.android.com/details?id=com.sayhello2theworld.te

尝试查看/data/system/packages.xml(您需要root来查看此文件),每个安装的应用程序都应该有一个条目。说,我的手机中安装了Adobe Reader:

<package name="com.adobe.reader" codePath="/mnt/asec/com.adobe.reader-1/pkg.apk" flags="262144" ts="1300539048000" version="37149" userId="10034" installer="com.google.android.feedback">
<sigs count="1">
<cert index="21" key="... very long random string ..." />
</sigs>
<perms />
</package>

我的手机已将userId =“10034”分配给Adobe Reader。

对于已请求与其他应用程序共享用户ID的应用程序,请说Handcent:

<package name="com.handcent.nextsms" codePath="/system/app/HandcentSMS.apk" flags="1" ts="1217592000000" version="373" sharedUserId="10064">
<sigs count="1">
<cert index="17" key="... very long random string ..." />
</sigs>
</package>

然后您要查找的属性是sharedUserId =“10064”

答案 2 :(得分:0)

PACKAGENAME=termux
jcomeau@aspire:~$ adb shell ps -n | grep $PACKAGENAME
10114     17830 246   769444 40176 SyS_epoll_ 00000000 S com.termux
10114     17856 17830 12164  2032  poll_sched 00000000 S /data/data/com.termux/files/usr/bin/bash

这适用于Android 6.0版的BLU Dash X2。

此外,用户名与UID匹配,即10114的用户名为u0_a114。