如何获取Android应用程序ID?

在Android中,如何以编程方式(或通过其他方法)获取应用程序的ID,以及如何使用该ID与其他应用程序进行通信?

如果你正在寻找由gradle中的applicationId定义的值,你可以简单地使用

 BuildConfig.APPLICATION_ID 

如果通过application id ,你指的是package name ,你可以使用方法Context::getPackageName ( http:// http://developer.android.com/reference/android/content/Context.html#getPackageName%28 %29 )。

如果您希望与其他应用程序通信,有多种方法:

  1. 开始另一个应用程序的活动,并发送“意图”的“额外”
  2. 发送具有特定操作/类别的广播,并以附加内容发送数据
  3. 如果您只需要共享结构化数据,请使用内容提供者
  4. 如果其他应用程序需要在后台连续运行,请使用“服务器”并将自己“绑定”到服务。

如果您可以详细说明您的具体要求,社区将能够更好地帮助您。

我不确定你指的是什么“应用程序ID”,但是对于你的应用程序的唯一标识符,你可以使用:

getApplication()。getPackageName()方法从您当前的活动

否则你可以得到你的应用程序运行的进程ID:

final static int android.os.Process.myPid()
返回此进程的标识符,可以与killProcess(int)和sendSignal(int,int)一起使用。

我不确定您需要的应​​用/安装ID,但是您可以从Android开发人员的一篇优秀文章中查看现有的可能性:

总结一下:

  • UUID.randomUUID()用于在安装后第一次运行应用程序时创buildid,之后进行简单检索
  • TelephonyManager.getDeviceId()用于实际的设备标识符
  • 在相对较新的设备上Settings.Secure.ANDROID_ID .Secure.ANDROID_ID

PackageInfo.sharedUserId字段将显示在清单中分配的用户标识。

如果您希望两个应用程序具有相同的userId,那么他们可以看到彼此的数据并在同一个进程中运行,然后在清单中为它们分配相同的userId:

 android:sharedUserId="string" 

具有相同sharedUserId的两个包也需要具有相同的签名。

我也build议您在这里阅读,以正确的方向推动。

如果整个目的是与其他应用程序进行数据通信,请使用Intent的sendBroadcast方法。

如果你正在使用新的Gradle构build系统,那么getPackageName会奇怪地返回应用程序ID,而不是包名称。 所以MasterGaurav的答案是正确的,但他不需要用++开始

如果通过应用程序ID,你指的是软件包名称…

看到更多关于这里的差异。

**在这一点上并不新鲜

++我意识到他的答案在2011年是非常有意义的