在我的应用程序中,我们使用设备imei并基于该设备返回一些结果。我找不到任何解决方案来验证手机 IMEI,用户可以使用一些模拟器,例如 Genymotion,我的应用程序必须检测到这一点,如果用户使用模拟器,我必须不将数据发布到服务器,我如何验证 IMEI?
这个解决方案PHP工作正常,但我找不到与 java for android 相同的解决方案
function is_luhn($n) {
$str = '';
foreach (str_split(strrev((string) $n)) as $i => $d) {
$str .= $i %2 !== 0 ? $d * 2 : $d;
}
return array_sum(str_split($str)) % 10 === 0;
}
function is_imei($n){
return is_luhn($n) && strlen($n) == 15;
}
Run Code Online (Sandbox Code Playgroud)
尝试这个:
public boolean isValidImei(String s){
long n = Long.parseLong(s);
int l = s.length();
if(l!=15) // If length is not 15 then IMEI is Invalid
return false;
else
{
int d = 0, sum = 0;
for(int i=15; i>=1; i--)
{
d = (int)(n%10);
if(i%2 == 0)
{
d = 2*d; // Doubling every alternate digit
}
sum = sum + sumDig(d); // Finding sum of the digits
n = n/10;
}
System.out.println("Output : Sum = "+sum);
if(sum%10==0 && sum!=0)
return true;
else
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
sumDig 函数
int sumDig(int n) // Function for finding and returning sum of digits of a number
{
int a = 0;
while(n>0)
{
a = a + n%10;
n = n/10;
}
return a;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |