Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-应用程序安装的唯一ID_Android - Fatal编程技术网

Android-应用程序安装的唯一ID

Android-应用程序安装的唯一ID,android,Android,安装应用程序时是否有唯一可用的ID 我的意思是,在不同的设备上都是唯一的,所以如果相同的应用程序安装在10个不同的设备上,那么就有10个不同的ID。同一设备上的两个不同应用程序必须提供两个不同的ID 需要在应用程序更新后保持不变,如果您卸载并重新安装应用程序,则最好进行更改 出于安全原因,我不想生成UUID并将其写入应用程序专用存储中的文件。我的解决方案是使用Android SharedReferencesBackupAllper类和BackupAgentPer。无需将UUID存储在应用程序专用

安装应用程序时是否有唯一可用的ID

我的意思是,在不同的设备上都是唯一的,所以如果相同的应用程序安装在10个不同的设备上,那么就有10个不同的ID。同一设备上的两个不同应用程序必须提供两个不同的ID

需要在应用程序更新后保持不变,如果您卸载并重新安装应用程序,则最好进行更改


出于安全原因,我不想生成UUID并将其写入应用程序专用存储中的文件。

我的解决方案是使用Android SharedReferencesBackupAllper类和BackupAgentPer。无需将UUID存储在应用程序专用存储中的文件中(尽管我不确定您的安全约束是什么,所以使用SharedReferences数据库可能不会更好)。此解决方案允许您拥有设备/安装的唯一ID,并且它将通过应用程序卸载和安装(我通常认为这是一件好事)存活下来。如果您让您的应用程序在运行时确定是否已重新安装,则该应用程序可以在运行时生成新的UUID

一种方法是在应用程序的已安装资源包中查找作为.apk一部分的指示符文件。如果应用程序看到此文件,则它是一个新安装:生成/存储UUID,然后删除该文件(或更改其内容)。随后的执行将发现这一点,并意识到这不是一个新的安装

这是否满足您的需要?

谷歌为所有设备/用户提供了一个唯一的标识符,并可在所有Google Play设备API 9或更高版本中使用

还有许多其他机制,例如使用中详细介绍的。请注意ANDROID_ID上的博客帖子中的评论,尽管:

有缺点:首先,它在2.2之前的Android版本(“Froyo”)上不是100%可靠的。此外,在一家主要制造商生产的一款流行手机中,至少有一个广为观察到的bug,每个实例都有相同的安卓ID


谢谢,但是没有-我希望Android会给我一个ID。出于一些稍微奇怪的安全原因,我不想将它保存在orefs或磁盘上。@PaulHilliar我认为你给了自己一个不可能完成的任务。你要寻找的是一个“安装指纹”,安卓知道并可以按需提供给你的应用程序,但车载其他应用程序不知道。但安卓本身必须能够持久化它,这样它才能按需提供。我不认为存在符合您参数的ID。是的,“安装指纹”正是我想要的——这是一个好名字。Android提供这样一个ID是完全可行的,只是有点恼人,他们选择不实现它。谢谢,但是对于同一设备/用户上的所有应用程序,广告ID不是一样的吗?我想确定应用程序安装。同一设备上的两个不同应用程序必须提供两个不同的ID,因此在广告ID前加上程序包名称,每个应用程序的名称都是唯一的。这可以作为一个ID使用,但我希望手机上的其他应用程序不容易知道某些内容。我很难弄清楚原因,您可能需要进一步解释您的用例1) 你需要一个唯一的设备id 2)为什么它需要在每个应用程序/用户组合中都是唯一的3)为什么存在安全问题。从安全角度看,你似乎不应该依赖客户端(或恶意应用程序)创建的任何东西。您可以使用生成一个ID,该ID完全符合您的要求:。谢谢,但不符合条件。我说“出于安全原因,我不想生成UUID并将其写入应用程序专用存储中的文件”,但“writeInstallationId”方法确实做得很好,这只会对根设备产生安全影响,对吗?如果这是个问题,好吧。那么你不能使用任何特定于应用程序的标识符,而且你必须使用设备标识符。