1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. RoofFire, 03.01.2011 #1
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Hallo Leute,

    ich hoffe ihr könnt mir helfen. Bin nun schon an meiner zweiten App am Arbeiten. Diese soll die aktuelle Position abrufen.
    Dafür habe ich eine Klasse erstellt, sie nennt sich SearchLocation.
    Diese Klasse besitzt die öffentliche Methode searchLocation welche mir die aktuelle Position zurück gibt.
    Alles in allem ganz simpel.

    Wenn ich nun die Methode aus einer Activity aufrufe funktioniert fast alles. Nur die Methode locationManager.requestLocationUpdates wirft die Exception "SecurityException".

    Eigentlich klar was hier fehlt --> Der Manifesteintrag "ACCESS_FINE_LOCATION".

    Diesen habe ich aber.

    Nun kommt meine eigene Frage:
    Warum bekomme ich dennoch diese Exception geworfen. Muss diese Klasse ein Service/Activity sein um die Permission zum Zugriff auf die aktuelle Position zu besitzen?

    Vielen Dank im Vorraus,
    RoofFire
     
  2. sebastian, 05.01.2011 #2
    sebastian

    sebastian Fortgeschrittenes Mitglied

    Poste mal bitte dein Manifest.xml
     
  3. RoofFire, 05.01.2011 #3
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Habe das Problem gelöst. Die Security Exception wird auch bei anderen Problemen geworfen.
    Mir hat der Looper gefehlt:

    Code:
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,0, locationListener, Looper.getMainLooper());
     
  4. Rotesmofa, 06.01.2011 #4
    Rotesmofa

    Rotesmofa Fortgeschrittenes Mitglied

    Verstehe das nicht ganz, diesen Looper brauchst du aber nicht unbedingt zur Nutzung des GPS.

    Gruß
    Rotesmofa
     
  5. RoofFire, 07.01.2011 #5
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Nein unbedingt nicht. Ich versuch das einmal so zu erklären wie ich das verstanden habe. Tut mir zugleich leid wenn ich mich nicht korrekt ausdrücke.

    Rufe ich die requestLocationUpdate Methode in einer Activity auf, also im UI-Thread, so brauche ich den Looper nicht.
    Jedoch habe ich eine eigene Klasse mit dem Namen FindLocation erstellt. Diese Klasse wird dann in einem neuen Thread aufgerufen (Da ich in dieser Klasse auf ein GPS Signal warte und das bekanntlich länger dauern kann).

    Wird eben diese requestLocationUpdate Methode in einem nicht UI-Thread aufgerufen benötige ich den Looper.

    So ist meine Interpretation. Ich muss dazu sagen, dass ich erst einmal froh bin, dass es funktioniert. Und ich mich noch nicht mit dem Looper auseinander gesetzt habe (Weiß bisher nicht was dieser bewirken soll).
     

Diese Seite empfehlen