Sto scrivendo una classe di libreria per incapsulare alcune delle mie logiche nella mia prima app per Android. Una delle funzioni che voglio incapsulare è una funzione che interroga la rubrica. Come tale, ha bisogno di un ContentResolver
. Sto cercando di capire come mantenere le funzioni della libreria in black box ... cioè, per evitare che ogni passaggio Activity
nel proprio contesto ottenga un ContentResolver
.Come posso chiamare getContentResolver in Android?
Problema è che non riesco per la vita di me a capire come ottenere un ContentResolver
dalla mia funzione di libreria. Non riesco a trovare un'importazione che contenga getContentResolver
. Googling ha detto di utilizzare getContext
per ottenere un Context
su cui chiamare getContentResolver
, ma non riesco a trovare un'importazione contenente getContext
. I post successivi dicono di usare getSystemService
per ottenere un oggetto da chiamare getContext
. MA - Non trovo nessuna importazione contenente getSystemService
!
Quindi sono bloccato chiedendo, come posso ottenere un ContentResolver all'interno di una funzione di libreria incapsulata, o sono praticamente bloccato avendo ogni chiamata Activity
passare in un riferimento al proprio contesto?
Il mio codice è qualcosa di fondamentalmente come questo:
public final class MyLibrary {
private MyLibrary() { }
// take MyGroupItem as a class representing a projection
// containing information from the address book groups
public static ArrayList<MyGroupItem> getGroups() {
// do work here that would access the contacts
// thus requiring the ContentResolver
}
}
getgroups è il metodo in cui stavo cercando di evitare di dover passare in un Context
o ContentResolver
se potessi, come speravo di averlo in modo pulito nero -boxed.
Quali sarebbero eventuali altri effetti collaterali o "trucchi" dell'estensione dell '"Applicazione"? Ci sarebbe qualcosa che avrei bisogno di ripulire con un metodo distruttore o altro, o? – eidylon
Ok, quindi sto provando a seguire questa strada. Ho una classe che "estende l'applicazione" e ho aggiunto il nome di classe completo come "android: name" nel file manifest dell'app. Così ora nella mia classe di biblioteca, sto cercando di chiamare 'getApplication()', ma non lo trova come metodo, e non mi fornisce suggerimenti per il refactoring dell'importazione necessaria da aggiungere. Come posso chiamare 'getApplication()' per far gestire l'app? – eidylon
Non importa, ho capito. Grazie per l'aiuto! Saluti! – eidylon