0

我想用 Flutter 在 android 上获取唯一的设备 ID。我试过这个插件device_info但它没有返回我在 java 中得到的 ANDROID_IDSettings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

我怎样才能获得相同的ID?

4

2 回答 2

0

在这种情况下,使用特定于平台的代码和 Flutter 平台通道设置可能会更简单。

然后,您可以使用问题中包含的 Java 代码,并在需要时通过平台通道将 Android ID 传递给您的 Flutter 应用程序。

请参阅使用平台通道编写自定义平台特定代码

于 2018-05-09T19:48:26.107 回答
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

您也可以轻松地在您的应用程序 onCreate 中进行一次检查以修复任何 ID 错误的人,然后设置一个您修复它的标志,这样您就不会在 sharedpref 中再次修复它。

于 2018-05-09T20:01:33.830 回答