我正在尝试将设备ID提供给Logcat,但Android Studio正在向我发出此警告。
建议不要使用getstring来获取设备标识符
String deviceID = Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID);
为什么不推荐?
答案 0 :(得分:18)
完整警告说:
不建议使用其他设备标识符 而不是高价值的欺诈预防和先进的电话用例。 对于广告用例,请使用AdvertisingIdClient $ Info#getId和for 分析,使用InstanceId#getId。
更多信息: https://developer.android.com/training/articles/user-data-ids.html
我认为Android不建议使用此值,因为它是一个永久的唯一ID,可用于跟踪您的用户,并且他或她无法更改此ID或阻止您阅读它。警告中给出的其他选项尊重用户的意愿。这就是为什么Android建议你使用它。
这实际上取决于你将如何处理这个id。如今,隐私是一件敏感的事情。
同时检查:
...您必须遵守用户'选择退出基于兴趣的广告' 或“选择退出广告个性化”设置。如果用户已启用 此设置,您不能使用广告标识符进行创建 用户个人资料用于广告目的或用于定位用户 个性化广告。允许的活动包括上下文 广告,频次上限,转化跟踪,报告和 安全和欺诈检测。
来源:https://developer.android.com/training/articles/user-data-ids.html
答案 1 :(得分:-3)
正如Giovanni所说,将您的代码更改为:
php -f Path/To/File/cron.php >/dev/null 2>&1
或:
String deviceID = Settings.Secure.getString(getApplicationContext().getContentResolver(),
InstanceID.getInstance(getApplicationContext()).getId());
如果在中国大陆发布此应用,请勿使用以上方法,可能导致NullPointException,因为大部分设备都没有谷歌服务,无法获取此ID。 请使用
String deviceID = Settings.Secure.getString(getApplicationContext().getContentResolver(),
AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()).getId());
然后加上lint屏蔽
android.provider.Settings.Secure.ANDROID_ID
英文: 如果您的应用在中国发布,上述方法可能会导致NullPointException。因为中国的大多数设备都没有Google服务。 试试这个:
@SuppressLint("HardwareIds")
并添加一个suppressLint:
android.provider.Settings.Secure.ANDROID_ID