telephony manager در اندروید
سلام در این پست میخواهیم به کمک کلاس telephony به اطلاعات سیم کارتمان دست پیدا کنیم و از این اطلاعات در برنامه هایمان استفاده کنیم.
قبل از هرچیزی مانند همیشه اجازه دسترسی باید بدهیم :
1 | <uses-permission android:name="android.permission.READ_PHONE_STATE"/> |
حالا باید یک نمونه بسازیم از کلاسی که میخواهیم ازش استفاده کنیم:
1 | TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); |
حالا کد های اصلیمان رو مینویسیم و به توضیح هرکدام میپردازیم در کد ها به صورت کامنت:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | TextView textview1 = (TextView) findViewById(id.textView1); TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); //شماره IMEIN سیم کارت String IMEINumber = tm.getDeviceId(); //شماره ایدی مشترک String subscriberID = tm.getSubscriberId(); //شماره سریال سیم کارت String SIMSerialNumber = tm.getSimSerialNumber(); //کشور سرویس دهنده اینترنت String networkCountryISO = tm.getNetworkCountryIso(); //کشور سیم کارت String SIMCountryISO = tm.getSimCountryIso(); //ورژن نرم افزار دستگاه String softwareVersion = tm.getDeviceSoftwareVersion(); //شماره پیام صوتی String voiceMailNumber = tm.getVoiceMailNumber(); //نام اوپراتور سیم کارت String operatorname = tm.getSimOperatorName(); //شماره خط String number = tm.getLine1Number(); //وضعیت تماس int callstate = tm.getCallState(); //مدل گوشی int phonetype = tm.getPhoneType(); //روشن یا خاموش بودن دیتا اینترنت Boolean isnet = tm.isNetworkRoaming(); textview1.setText("imein=" + IMEINumber + " subscriberID=" + subscriberID + " simSerialNumber=" + SIMSerialNumber + " networkcountryISO=" + networkCountryISO + " simCountryISO=" + SIMCountryISO + " software=" + softwareVersion + " SvoiceMainNumber=" + voiceMailNumber + " operator=" + operatorname + " number=" + number + " callstate=" + callstate + " phonetype=" + phonetype + " networkroaming=" + isnet); } |
در اینجا از متد های telephonyManager استفاده کردیم و مقدار های مورد نیاز را در متغییر ریختیم و به کمک settext نمایش دادیم ان ها را در برناممان.
همچنین میتوانید به صورت زیر که مشخص است روشش به نوع اینترنت سیم کارت دست پیدا کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | String myphoneType=""; int myintPhoneType=tm.getPhoneType(); switch (myintPhoneType) { case (TelephonyManager.PHONE_TYPE_CDMA): myphoneType="CDMA"; break; case (TelephonyManager.PHONE_TYPE_GSM): myphoneType="GSM"; break; case (TelephonyManager.PHONE_TYPE_NONE): myphoneType="NONE"; break; } |
getPhoneType همانطور که در مثال قبلی دیدیم یک مقدار عددی برمیگرداند که میتوانیم به کمک دستور switch به نوع اینترنتمان دسترسی داشته باشیم.
در نهایت خروجی برناممان مانند زیر میشود:
پایان.
سلام و تشکر بخاطر این پست.
چطور میشه اطلاعات مربوط به سیم کارت دوم تو گوشیهای 2 سیم رو بدست آورد (گوشیهایی که اندرویدشون زیر 5.1 هست)
واقعا متشکر میشم اگر راهنمایی کنید.
سلام ممنون دوست عزیز.
زیر اندروید 5/1 فکر نمیکنم امکان اینکار باشه و یا حداقل بنده نمیدونم.
موفق باشید
بازم سلام،
خودم یه مقدار راهنمایی های سایت developer.android در مورد سیم 2 رو مطالعه کردم ولی نتونستم چیزی بفهمم.
در صورت امکان یه آموزش برای بدست آوردن اطلاعات سیم 2 تو API 21 بزارید و اگر چونگی برقرای تماس یا ارسال پیام از سیم 2 رو هم توضیح بدید خیلی خوب میشه.
سلام به زودی قرار می گیرد.
درود و سلام خدمت آقای جعفری پور
بلاخره خودم تونستم اطلاعات سیم 2 رو تو اندروید 5.1 پیدا کنم ولی بند موندم که چطور برای ارسال پیام یا تماس گرفتن از سیم دوم استفاده کنم.
تو این مدت هر هفته دو سه بار سایتو چک میکردم و آموزشهای خیلی خوبی گذاشتید ولی این مورد که من مشکل خوردم رو ندیدم.
در ضمن یه آموزش هست تو سایت با استفاده از کلاس SimUtils، دیدمش و امتحان کردم ولی که متاسفانه رو همه گوشیا کار نکرد.
بازم خواستم بگم اگر امکانش هست آموزش ارسال پیام و تماس گرفتن از سیم دو رو تو اندروید 5.1 به بالا بزارید.
سلام و درود بررسی می کنم اگر چیزی پیدا کردم قرار میدهم.