如何获取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 )。
如果您希望与其他应用程序通信,有多种方法:
- 开始另一个应用程序的活动,并发送“意图”的“额外”
- 发送具有特定操作/类别的广播,并以附加内容发送数据
- 如果您只需要共享结构化数据,请使用内容提供者
- 如果其他应用程序需要在后台连续运行,请使用“服务器”并将自己“绑定”到服务。
如果您可以详细说明您的具体要求,社区将能够更好地帮助您。
我不确定你指的是什么“应用程序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年是非常有意义的