CellID abfragen

  • Hallo,


    ich versuche gerade eine Anwendung für mein Android zu schreiben. Sie Sieht wiefolgt aus:


    package locater.test;


    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    import android.content.Context;
    import android.telephony.TelephonyManager;
    import android.telephony.gsm.GsmCellLocation;



    public class test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    GsmCellLocation location;
    location = (GsmCellLocation) tm.getCellLocation();


    int cellID = location.getCid();
    TextView tv = new TextView(this);


    String st;
    st = String.format("ID: %d\n", cellID);
    tv.setText(st);
    setContentView(tv);
    }


    }


    Leider stuertzt sie immer ab wenn ich tm.getCellLocation(); aufrufe. Kann mir jemand auf die Spruenge helfen was ich falsch mache? Danke Lisa

  • Hallo Lisa,
    also ohne ne konkrete Fehlermeldung zu haben würde ich raten, dass deine App nicht die nötigen permissions hat, um locations zu lesen. Dazu müsstest du in der AndroidManifest.xml folgendes innerhalb des <manifest...>...</manifest> tags einfügen:

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


    Wenns das nicht war, wärs hilfreich zu wissen, was genau für ne Exception geworfen wird.

  • Hallo,


    es hat leider etwas gedauert. Ich habe es nochmal ausprobiert. Die Permissions haben nichts gebracht. Wie kann ich die entsprechnde Exception fangen? Ich habe in der Doku nichts dazu finden können, welche Exception von getCellLocation() geworfen werden können.


    Danke DieLisa

  • Hallo,


    ich habe das Beispiel nochmal wiefolgt angepasst:



    public class test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE) ;
    if (tMgr != null){
    try {
    GsmCellLocation gsmCellLocation = (GsmCellLocation)tMgr.getCellLocation() ;
    if (gsmCellLocation != null) {
    String mCellId = "" + gsmCellLocation.getCid() ;
    TextView tv = new TextView(this);
    tv.setText(mCellId);
    setContentView(tv);
    }
    } finally {
    TextView tv = new TextView(this);
    String st;
    st = String.format("Hat nicht sollen sein");
    tv.setText(st);
    setContentView(tv);
    }
    }


    TextView tv = new TextView(this);
    String st;
    int cellID = 6;
    st = String.format("ID: %d\n", cellID);
    tv.setText(st);
    setContentView(tv);
    }
    }


    Leider stürzt es trotzdem ab ohne den finally Block zu betreten. Es wird also keine exeption geworfen, was ich nicht ganz verstehe.


    Bis dann DieLisa

  • Ich bin mir nicht sicher, ob der finally Block da wirklich macht, was er soll, ich komm aus der C++ Ecke und hab den noch nie benutzt. Versuchs mal mit:

    Java
    try{...}catch(Exception e){    Log.e("<dein Tag>", "Exception: "+ e.getLocalizedMessage());}


    Deinen Code von oben hatte ich damals selber ausprobiert und bei mir hat er mit den permissions funktioniert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!