Dur*_*n.H 14 android mac-address bluetooth uniqueidentifier wif
我正在寻找一种方法来找到Android设备的unique_id.
我将在登录请求有效负载中使用Id,因为我的应用程序是基于许可证的服务应用程序,Id在正常情况下不应更改.
在iOS中,有一些针对iOS的唯一ID解决方案,例如CFUUID或者identifierForVendor,以及Keychain,广告标识符等,可以完成预期的工作.
但在Android中,我所知道的所有选项似乎都有漏洞.
IMEI:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_deviceId = TelephonyMgr.getDeviceId();
Run Code Online (Sandbox Code Playgroud)
缺点
这是依赖SIM卡的
如果没有SIM卡那么我们就注定了
如果有双卡,那么我们就会陷入困境
Android_ID:
String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
缺点
WLAN MAC地址
WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();
Run Code Online (Sandbox Code Playgroud)
缺点
蓝牙地址:
BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();
Run Code Online (Sandbox Code Playgroud)
缺点:
我认为有两种方法可以解决这个问题
我们通过哈希时间戳生成一个随机ID,我用上面提到的唯一ID并存储它,以便下次登录时我们将检查key的存储值是否为null,如果是,那么我们将生成并存储它我们' ll使用密钥的值.
如果有相当于iOS的钥匙串的东西,那么我们对这种方法很好.
找到类似于iOS的advertisingIdentifier的全局标识符,该标识符对于设备中的所有应用程序都是相同的.
任何帮助表示赞赏!
我选择使用Android_ID,因为它不依赖于任何硬件.
Build.SERIAL还取决于仅在wifi设备中的电话的可用性,此Build.SERIAL将无法工作.
我已经解释了其他方法如何依赖于问题本身的硬件可用性.
| 归档时间: |
|
| 查看次数: |
6234 次 |
| 最近记录: |