telephony manager در اندروید

سلام در این پست میخواهیم به کمک کلاس telephony به اطلاعات سیم کارتمان دست پیدا کنیم و از این اطلاعات در برنامه هایمان استفاده کنیم.
قبل از هرچیزی مانند همیشه اجازه دسترسی باید بدهیم :

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

حالا باید یک نمونه بسازیم از کلاسی که میخواهیم ازش استفاده کنیم:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

حالا کد های اصلیمان رو مینویسیم و به توضیح هرکدام میپردازیم در کد ها به صورت کامنت:

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 نمایش دادیم ان ها را در برناممان.
همچنین میتوانید به صورت زیر که مشخص است روشش به نوع اینترنت سیم کارت دست پیدا کنید:

 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 به نوع اینترنتمان دسترسی داشته باشیم.
در نهایت خروجی برناممان مانند زیر میشود:
telephony
پایان.

مطالعه بیشتر