Android Mobilfunk Info

This article is also available in: enEnglisch

Android Mobilfunk Information auslesen

Welche Mobilfunk-Informationen werden gelesen?

Auf dieser Seite zeigen wir, wie mit Android Informationen vom Mobilfunk-Netz ausgelesen werden können. Diese Funktionen benötigen einen Zugriff auf den Telefonstatus sowie einen Zugriff auf die Ortungsdienste. Sollte dies nicht möglich sein, so wird der Nutzer über eine Toast-Message informiert, da die App die Berechtigungen im Vorhinein überprüft.

Ermittelte Daten

  • Cell ID (eindeutige ID von der verbundenen Sendestation)
  • LAC (Aufenthaltsbereich im Mobilfunk-Netz)
  • MCC (Der Mobile Contry Code gibt das Land an)
  • MNC (Mobilfunknetzkennzahl)
  • TYPE (Typ des Netzes wie GSM, 3G, LTE…)
  • IMEI (ID vom Telefon)
  • NAME (Name des Netzbetreibers)
Android Version API LEVEL
> 4.0.3 15

Codebeispiel

MainAcitvity.java: Dieser Code befindet sich in der MainActivity


package com.aeqweb.cellinfo;

import ...

public class MainActivity extends AppCompatActivity {
    TelephonyManager telm;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(MainActivity.this, "Please allow phone state access",
                    Toast.LENGTH_LONG).show();
        } else {
            if (ContextCompat.checkSelfPermission(MainActivity.this,
                    Manifest.permission.ACCESS_COARSE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(MainActivity.this, "Please allow location services",
                        Toast.LENGTH_LONG).show();
            } else {
                if (ContextCompat.checkSelfPermission(MainActivity.this,
                        Manifest.permission.ACCESS_COARSE_LOCATION)
                        != PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(MainActivity.this, "Please allow location service",
                            Toast.LENGTH_LONG).show();
                } else {
                    telm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                    TextView cid = (TextView) findViewById(R.id.cell_id);
                    TextView lac = (TextView) findViewById(R.id.cell_lac);
                    TextView nty = (TextView) findViewById(R.id.cell_type);
                    TextView mcc = (TextView) findViewById(R.id.cell_mcc);
                    TextView mnc = (TextView) findViewById(R.id.cell_mnc);
                    TextView imei = (TextView) findViewById(R.id.IMEI);
                    TextView cname = (TextView) findViewById(R.id.network_name);

                    cid.setText("" + cell_id());
                    lac.setText("" + cell_lac());
                    nty.setText("" + networkType());
                    mcc.setText("" + cell_mcc());
                    mnc.setText("" + cell_mnc());
                    imei.setText("" + IMEI());
                    cname.setText("" + networkOperator());
                }
            }
        }
    }

    private int cell_id() {
        GsmCellLocation cellLocation = (GsmCellLocation) telm.getCellLocation();
        return cellLocation.getCid() & 0xffff;
    }

    private int cell_lac() {
        GsmCellLocation cellLocation = (GsmCellLocation) telm.getCellLocation();
        return cellLocation.getLac() & 0xffff;
    }

    private int cell_mcc() {
        String networkOperator = telm.getNetworkOperator();
        if (!TextUtils.isEmpty(networkOperator)) {
            return Integer.parseInt(networkOperator.substring(0, 3));
        } else {
            return 0;
        }
    }

    private int cell_mnc() {
        String networkOperator = telm.getNetworkOperator();
        if (!TextUtils.isEmpty(networkOperator)) {
            return Integer.parseInt(networkOperator.substring(3));
        } else {
            return 0;
        }
    }

    private String networkOperator() {
        return telm.getNetworkOperatorName();
    }

    private String networkType() {
        int networktype = telm.getNetworkType();
        switch (networktype) {
            case TelephonyManager.NETWORK_TYPE_1xRTT:
                return "1xRTT";
            case TelephonyManager.NETWORK_TYPE_CDMA:
                return "CDMA";
            case TelephonyManager.NETWORK_TYPE_EDGE:
                return "EDGE";
            case TelephonyManager.NETWORK_TYPE_EHRPD:
                return "eHRPD";
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
                return "EVDO rev. 0";
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
                return "EVDO rev. A";
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
                return "EVDO rev. B";
            case TelephonyManager.NETWORK_TYPE_GPRS:
                return "GPRS";
            case TelephonyManager.NETWORK_TYPE_HSDPA:
                return "HSDPA";
            case TelephonyManager.NETWORK_TYPE_HSPA:
                return "HSPA";
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return "HSPA+";
            case TelephonyManager.NETWORK_TYPE_HSUPA:
                return "HSUPA";
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return "iDen";
            case TelephonyManager.NETWORK_TYPE_LTE:
                return "LTE";
            case TelephonyManager.NETWORK_TYPE_UMTS:
                return "UMTS";
            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
                return "Unknown";
        }
        throw new RuntimeException("Unknown");
    }

    public String IMEI() {
        TelephonyManager mngr = (TelephonyManager) getApplicationContext().getSystemService(getApplicationContext().TELEPHONY_SERVICE);
        String imei = mngr.getDeviceId();
        return imei;
    }
}

Manifest: Diese Rechte müssen in der Manifest definiert werden


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