Android: ActivityCompat.requestPermissions erfordert Aktivität und Kontext nicht :/

Ich rufe ActivityCompat.requestPermissions um Berechtigungen unter android M, dies erfordert jedoch eine Tätigkeit in der argument. Das wäre gut, außer, dass ich es auch nennen wollen, von einem singleton und singleton kann jede Aktivität in der app.

ActivityCompat.requestPermissions(context, PERMISSIONS_LOCATION, REQUEST_LOCATION);

Möchte ich vermeiden, hält eine Referenz zu einer Aktivität innerhalb der singleton-das ist eine todsichere Rezept für ein Speicher-Leck, und auch ich würde es vorziehen, dass die singleton-keine Aktivität überhaupt, denn es erfordert nutzlos code-in alle Tätigkeiten, call (jeder einzelne von Ihnen ist gehen zu müssen, um ein zusätzliches argument in die getInstance() um das singleton zu halten eine Aktivität - die singleton benötigt um die Aktivität von irgendwo).

Nun, ich kann technisch Holen Sie sich eine Aktivität und dann auf null direkt nach meiner Anfrage mit der Erlaubnis, jedoch, dass noch immer lässt mich mit Tonnen von nutzlosen Aktivität Argumente, die in jeder einzelnen Tätigkeit, wo ich einen Anruf auf das singleton. Gibt es eine elegantere Lösung für dieses problem, ich bin nur nicht sehen?

Sie können tatsächlich cast Kontext der Aktivität, wenn erforderlich, wenn Sie sicher sind, dass die Kontext-variable enthält Referenz zu einer Aktivität.
Ich bin mit getApplicationContext (), da mein Rahmen, um zu vermeiden, durch Kontexte von Aktivitäten. Ich vermute, ich kann nicht wirken, die zu einer Aktivität?
Wenn es erfordert die Tätigkeit als Objekt, den übergang von einer Aktivität zur anderen, dessen Wert aktualisiert werden soll. Indem Sie das tun, ich denke, Es nicht lösen Singleton Zweck.
Siehe dieses Beispiel für die Runtime-Anfrage [link] github.com/googlesamples/android-RuntimePermissions/blob/master/...
Richtig, aber das Ziel der Aktivität ist ein muss, um zu passieren, nur um zu entscheiden, wo, um das Dialogfeld zu Fragen, für die Berechtigungen.

InformationsquelleAutor Jon | 2015-08-19

Schreibe einen Kommentar