我想用Flutter获取android上的唯一设备ID。
我试过这个插件device_info,但它没有返回我在java Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
我怎样才能获得相同的ID?
答案 0 :(得分:0)
在这种情况下,使用平台特定代码和Flutter平台频道设置可能会更简单。
然后,您可以使用问题中包含的Java代码,并在需要时通过平台渠道将Android ID传递给Flutter应用程序。
请参阅Writing custom platform-specific code with platform channels 。
答案 1 :(得分:0)
你可以做你做过的事,但不可靠或保证。请阅读: https://developer.android.com/training/articles/user-data-ids
以便最佳地处理唯一ID。 当然,您可以获取电话网络ID,但如果该设备没有运营商,该怎么办? 您可以获取设备ID,但如果它为该制造商返回null,该怎么办? 你可以获得广告商ID,这通常是推荐的,但是它可以改变,它不太可能改变,但是如果他们进行了工厂重置或类似的事情,那就可以了。
因此,您最好的选择是生成自己的唯一ID,并将其与应用程序本地存储在数据库实现或SharedPreferences中。
所以要回答你的问题,如果你有现有的观众,你使用了错误的,使用唯一ID的不良做法,那么你应该建立一个带有if / else逻辑的ID工厂来修复它。
If (first time accessing an ID for this installed application)
//createOne and store it
else if(ID already exists and matches ANDROID_SECURE_ID method)
//get it the old way,
//create new one, and update your access to APIs or DB with new associated ID so that you never hit this code path again
else
//use correct ID implementation that you created
您也可以轻松地在Application onCreate中进行一次性检查以修复ID错误的人,然后设置一个您修复它的标志,这样您就不会再在sharedpref中修复它。