java - 是否可以从我的应用程序中阻止电话?手机是否有一些可以访问的 ID?
问题描述
您好,我问这个问题是因为我有一个应用程序,人们必须在其中发布非常严肃的内容,如果用户发布了不正确的内容,那么我想永远禁止该人,但我该如何实现呢?手机是否有某种类型的标识符,我可以从我的应用程序中检索,检查数据库,如果那个人被禁止,那么我不会让那个手机上传任何东西,或者可能阻止 IP 地址?如何实现?
解决方案
电话有许多 ID,但几乎所有 ID 都可以以一种或另一种形式重置,最好的办法是收集所有 ID,可能还有 IP 地址并检查所有这些。这不是万无一失的,但这个人必须经历很多麻烦才能四处走动。虽然,即使有万无一失的方法,他们也可以买一部新手机。
以下是 ID 的一些选项
通用 Android 指南: https ://developer.android.com/training/articles/user-data-ids
选项 1:广告 ID http://www.androiddocs.com/google/play-services/id.html
缺点:用户可以通过设置https://www.ghacks.net/2015/04/20/how-to-reset-your-advertising-id-on-android/重置
选项 2: GUID https://developer.android.com/reference/java/util/UUID
可以通过清除应用数据或重新安装来重置
选项 3:硬件 ID IMEI https://developer.android.com/reference/android/telephony/TelephonyManager
缺点 需要权限 READ_PHONE_STATE(我们已经要求) 用户可以关闭,因此我们将无权访问
选项 4:硬件 ID SSAID https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html
缺点 可以通过出厂重置手机来重置 从 O 开始,这将是每个应用程序的 ID,而不是设备 ID,这意味着它可以通过卸载和重新安装来重置
选项 5: ANDROID_ID https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID
缺点 用户可以通过在设备上创建新用户来创建新用户 也可以使用出厂重置重置 可以为空
推荐阅读
- c++ - 使用 CMake 将其他依赖项和库目录链接到静态库项目
- templates - 如何将信息框移到一边?
- python - Python Plotly 用文本注释多个变量
- python - tensorflow 的 Dataset.list_files 函数中的“/*/*”是什么意思?
- python - 衡量运行时最佳实践 (Python)
- git - 在 GitHub 拉取请求中更改提交消息
- java - 如何在 IntelliJ 中显示文件结构(意外删除后)
- reactjs - 反应:你怎么知道哪个变量导致 componentDidUpdate() 被触发?
- sql - 将月费率除以日记录在SQL Server中基于getdate()和会计闰年的查询
- typescript - 映射保留参数类型的函数数组。TypeScript v4 中的可变元组类型可以改善这一点吗?