如何检测另一个Android设备?

3

我有一个需求,就是如果我在一台Android设备上运行我的应用程序,然后尝试在另一台Android设备上运行同样的应用程序,我需要首先检查它是否是另一台设备,如果是的话,我应该继续进行。请问是否有任何方法可以实现这一点?

谢谢。


将一个标志放入共享偏好中。在应用程序第一次运行时设置该标志。下次运行时检查该标志,然后你就会知道......??? - SKT
3个回答

2
你可以使用这个:
telephonyManager = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getDeviceId();
telephonyManager.getSimSerialNumber();

getDeviceIdgetSimSerialNumber是每个设备唯一的,因此您可以检查这些值。


你打算在哪里检查这些值呢?我怀疑要得出一个成功的答案可能需要更多的工作。 - paulkayuk
1
您必须将这些值保存在服务器端,而不是客户端,因此对于第一个设备,您应该上传这些值并与其他设备进行比较检查。 - Tomer Mor

0
为了实现这一点,问题在于:
How can we differentiate, if we are installing app,
first time on 1st device or first time on second device.
so for that we have to use a unique key for app to run 
on each different device.
So that before saving shared pref,
we can validate the unique key for that device. 

现在的问题是用户如何获得唯一的密钥?因此,假设应用程序供应商将为每个设备提供密钥。但是,为此,应用程序应该有一些算法来验证我们提供的密钥。
但不幸的是,如果供应商提供密钥,用户也可以使用该密钥安装到另一个设备上。
因此,最终解决方案是在第一次运行应用程序之前,必须在某个Web服务上注册设备以进行激活。

在第一次运行应用程序之前,必须在某个Web服务上注册设备。现在那将是魔法!我担心你的第一个答案更接近(或者至少在某种程度上)。然而,我怀疑你脑海中的想法会起作用,只是你在写作时表达的方式让它看起来像魔法一样。 - paulkayuk

-1
在第一次运行时,在共享首选项中设置一个标志。
SharedPreferences preferences = getSharedPreferences("PREF_NAME", 0);
boolean onlyonce = preferences.getBoolean("FLAG_NAME", false);

if (!onlyonce ) {
   SharedPreferences.Editor editor = preferences.edit();
   editor.putBoolean("FLAG_NAME", true);
   editor.commit();
}

如果用户重置应用程序,也会有风险清除它。这样能解决你的问题吗?


-1 表示没有阅读/理解问题就回答。 - paulkayuk
@paulkayuk 感谢您的评论,但是我已经在我的回答中解释了这样做的风险。为什么还要这样做呢? - SKT
请阅读问题描述,问题中提到了两个不同的设备。共享偏好存在于每个单独的设备上,不能在2个或更多设备之间共享。 - paulkayuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接