آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

به دست آوردن شماره سریال (Serial Number) گوشی اندروید (به عنوان یک id منحصر بفرد برای شناسایی گوشی های اندروید)، در برنامه نویسی اندروید

برای اینکه بتوانیم گوشی های اندروید مختلف را شناسایی کنیم، بهترین روش، استفاده از شماره سریال (Serial Number) گوشی ها می باشد. به عنوان مثال، با نصب برنامه اندروید بر روی گوشی کاربر، برنامه چک می کند که اگر گوشی به اینترنت متصل است، شماره سریال گوشی کاربر را به دست آورده و به سرور اینترنتی شما ارسال کند. در سرور هم، اگر شماره سریال تکراری باشد که هیچ، اما اگر جدید باشد، در پایگاه داده ذخیره می شود و بنابراین تعداد کل کاربرانی که برنامه اندروید را نصب کرده اند (البته آنهایی که تاکنون به اینترنت متصل شده اند) را در پایگاه داده خواهیم داشت (می توان کدها را به گونه ای نوشت که در هر بار اجرای برنامه اندروید، چک کند که اگر به اینترنت متصل است، شماره سریال به سرور اینترنتی ارسال گردد).

با استفاده از کد زیر، می توانیم شماره سریال گوشی را به دست آوریم :


// get serial of phone --> getDeviceID() will return the MDN or MEID of the device depending on which radio the phone uses (GSM or CDMA)
TelephonyManager tManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String phone_serial_number = (String) tManager.getDeviceId(); // permission --> READ_PHONE_STATE

اما دسته ای از گوشی ها هستند که یک شماره سریال تکراری (معادل 9774d56d682e549c) را برمی گردانند، بنابراین برای اینکه آنها را به عنوان گوشی های تکراری نشخیص ندهیم، کدها را به صورت زیر کامل می کنیم (برای آن دسته از گوشی ها، یک شماره تصادفی تولید می کنیم که برای شناسایی آنها در نظر می گیریم، نکته مهم این است که نباید هر بار یک شماره جدید تولید شود، بنابراین کد زیر تنها باید یک بار اجرا شود و شماره تصادفی تولید شده را در گوشی فرد ذخیره کرده و در دفعات بعدی، آن را بازیابی می کنیم) :


// get serial of phone --> getDeviceID() will return the MDN or MEID of the device depending on which radio the phone uses (GSM or CDMA)
TelephonyManager tManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String phone_serial_number = (String) tManager.getDeviceId(); // permission --> READ_PHONE_STATE
if(phone_serial_number.equals("9774d56d682e549c")){
   // produce random_number_of_phone
   int min = 1;
   int max = 2100000000;
   Random r = new Random();
   int random_number_of_phone = r.nextInt(max - min + 1) + min;
   phone_serial_number = "random_"+String.valueOf(random_number_of_phone);
}

برای اینکه کد بالا را تنها یک بار اجرا کنید،