Permission Problem bei eigener Klasse (LocationManager)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von RoofFire, 03.01.2011.

  1. RoofFire, 03.01.2011 #1
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2010
    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

    Beiträge:
    271
    Erhaltene Danke:
    74
    Registriert seit:
    11.05.2009
    Poste mal bitte dein Manifest.xml
     
  3. RoofFire, 05.01.2011 #3
    RoofFire

    RoofFire Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2010
    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

    Beiträge:
    279
    Erhaltene Danke:
    20
    Registriert seit:
    08.08.2010
    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

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2010
    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