你如何获得Android的主要电子邮件地址(或电子邮件地址列表)?
我的理解是,在OS 2.0+上支持多个电子邮件地址,但在2.0以下,每个设备只能有一个电子邮件地址.
我需要为Android应用程序使用唯一的ID,我认为该设备的序列号将是一个很好的候选人.如何在我的应用中检索Android设备的序列号?
我是Android开发新手,我想在安装后首先根据应用程序设置一些应用程序的属性.有没有办法找到应用程序第一次运行,然后设置其第一个运行属性?
我正在使用这个电话:
Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
获取设备的UID.我想我从多个设备获得相同的ID.这有可能吗?
相关ID是:9774d56d682e549c,显然有几个设备返回此ID的问题http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403
我正在开发一个针对Android 4.0(API 14)及更高版本的Android应用程序.
我正在寻找一个每个设备唯一的序列号,并且这个序列号永远存在(与设备一起死亡,在出厂重置后不会改变).
我在网上发现了很多关于Android设备的唯一标识符的结果,但在android.os.Build.SERIAL数字上却很少.
到目前为止,我已经消除了ANDROID_ID的使用,因为它可能会在出厂重置后发生变化.我也消除了IMEI的使用,因为Android设备可能是非手机的.我无法使用wifi或蓝牙MAC ADDRESS,因为如果未启用硬件(基于我在网络上找到的内容),设备可能没有这样的硬件和/或这样的mac地址可能无法读取.
我相信我可能会去Android设备序列号.
可以使用android.os.Build.SERIAL轻松访问它(因为它是在API级别9中添加的,不需要任何其他权限).
我的问题是:
考虑到我的应用程序针对Android 4.0(API 14)及更高版本,是每个设备唯一的android设备的android.os.Build.SERIAL号码吗?
目前,android.os.Build.SERIAL的文档指示:硬件序列号(如果可用).仅限字母数字,不区分大小写. 这是否意味着序列号可能不可用?
什么是满足上述条件的另一种替代方案?
查看SharedPreferences文档,它说:
"注意:目前这个类不支持跨多个进程使用.这将在以后添加."
所以它本身似乎并不是线程安全的.但是,对commit()和apply()有什么样的保证?
例如:
synchronized(uniqueIdLock){
uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
uniqueId++;
sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
Run Code Online (Sandbox Code Playgroud)
是否可以保证uniqueId在这种情况下始终是唯一的?
如果没有,是否有更好的方法来跟踪持续存在的应用程序的唯一ID?
如何以编程方式访问下图中显示的值?

我正在开发一个获取设备MAC地址的应用程序,但是因为Android 6.0我的代码不起作用,给我一个不正确的值.
这是我的代码......
public String ObtenMAC()
{
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
return(info.getMacAddress().toUpperCase());
}
Run Code Online (Sandbox Code Playgroud)
它返回一个奇怪的代码:"02:00:00:00:00:00",而不是真正的MAC地址.
有人可以帮我解决吗?
可能重复:
是否有唯一的Android设备ID?
在许可文档中,Android开发人员提到了一种简单的方法来或多或少地安全地识别Android设备.他们正在使用android.Settings.Secure.ANDROID_ID.
他们说他们为此查询系统设置.但他们没有进一步解释这一点.
如何获取android_id并且我是否需要特殊权限?