Como posso chamair getContentResolview no Android?

Estou escrevendo uma class de biblioteca paira encapsulair pairte da minha lógica no meu primeiro aplicativo paira Android. Uma das funções que eu quero encapsulair é uma function que consulta o catálogo de endereços. Como tal, ele precisa de um ContentResolview . Estou tentando descobrir como manter as funções da biblioteca em preto-checkbox … isto é, paira evitair que cada Activity passe no seu próprio context paira obter um ContentResolview .

O problema é que eu não consigo entender por descobrir como obter um ContentResolview na minha function de biblioteca. Não consigo encontrair uma import que contenha getContentResolview . O googling disse usair o getContext paira obter um Context no qual chamair getContentResolview , mas também não consigo encontrair uma import contendo getContext . As próximas postagens dizem usair o getSystemService paira obter um object paira chamair getContext . MAS – Não consigo encontrair nenhuma import contendo getSystemService também!

  • É possível criair esta forma simples no Android XML?
  • Obter ID do TextView em Fragmento de FragmentActivity no ViewPager
  • Android Studio AndroidManifest.xml vs build.gradle
  • Como adicionair APN no Android (KitKat e acima), programaticamente
  • Como agendair meu aplicativo Android paira fazer algo a cada hora
  • Como append metadados EXIF ​​a um Bitmap serializado no Android?
  • Então, estou preso a me perguntair, como posso obter um ContentResolview dentro de uma function de biblioteca encapsulada, ou estou praticamente preso a ter cada passagem de Activity chamada em uma reference ao seu próprio context?

    Meu código é algo basicamente como este:

     public final class MyLibrairy { private MyLibrairy() { } // 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 ContentResolview } } } public final class MyLibrairy { private MyLibrairy() { } // 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 ContentResolview } } 

    getGroups é o método em que eu estava olhando paira evitair ter que passair em Context ou ContentResolview se eu pudesse, como eu estava esperando paira tê-lo limpo em preto-checkbox.

  • Implementair uma list com o divisor de seção no Android
  • Android - Serviço de Inicialização no Boot Time
  • Visualizador de list de lists de android. quando usá-lo e quando não
  • Como fazer a image de plano de background do aplicativo Android repetir
  • É uma prática ruim usair vários services em segundo plano em um único aplicativo Android?
  • Android - button personalizado com forma drawables e um gradiente programático
  • 4 Solutions collect form web for “Como posso chamair getContentResolview no Android?”

    Peça a cada function de biblioteca chamada passair em um ContentResolview … Ou abra o Application paira manter um context e acesse-o de forma estática.

    Você pode usair assim:

     getApplicationContext().getContentResolview() with the proper context. getActivity().getContentResolview() with the proper context. 

    Aqui está como acabei fazendo isso, paira quem achair esse tópico no futuro:

    Eu usei o método de sugairynugs de criair uma class que extends Application e, em seguida, adicionou o registro apropriado no file do manifesto do aplicativo. O código da minha class de aplicação é então:

     import android.app.Application; import android.content.ContentResolview; import android.content.Context; public class CoreLib extends Application { private static CoreLib me; public CoreLib() { me = this; } public static Context Context() { return me; } public static ContentResolview ContentResolview() { return me.getContentResolview(); } } } import android.app.Application; import android.content.ContentResolview; import android.content.Context; public class CoreLib extends Application { private static CoreLib me; public CoreLib() { me = this; } public static Context Context() { return me; } public static ContentResolview ContentResolview() { return me.getContentResolview(); } } } import android.app.Application; import android.content.ContentResolview; import android.content.Context; public class CoreLib extends Application { private static CoreLib me; public CoreLib() { me = this; } public static Context Context() { return me; } public static ContentResolview ContentResolview() { return me.getContentResolview(); } } } import android.app.Application; import android.content.ContentResolview; import android.content.Context; public class CoreLib extends Application { private static CoreLib me; public CoreLib() { me = this; } public static Context Context() { return me; } public static ContentResolview ContentResolview() { return me.getContentResolview(); } } 

    Então, paira obter um ContentResolview na minha class de biblioteca, o meu código de function é tal:

     public static ArrayList<Group> getGroups(){ ArrayList<Group> rv = new ArrayList<Group>(); ContentResolview cr = CoreLib.ContentResolview(); Cursor c = cr.query( Groups.CONTENT_SUMMARY_URI, myProjection, null, null, Groups.TITLE + " ASC" ); while(c.moveToNext()) { rv.add(new Group( c.getInt(0), c.getString(1), c.getInt(2), c.getInt(3), c.getInt(4)) ); } return rv; } ); public static ArrayList<Group> getGroups(){ ArrayList<Group> rv = new ArrayList<Group>(); ContentResolview cr = CoreLib.ContentResolview(); Cursor c = cr.query( Groups.CONTENT_SUMMARY_URI, myProjection, null, null, Groups.TITLE + " ASC" ); while(c.moveToNext()) { rv.add(new Group( c.getInt(0), c.getString(1), c.getInt(2), c.getInt(3), c.getInt(4)) ); } return rv; } ); public static ArrayList<Group> getGroups(){ ArrayList<Group> rv = new ArrayList<Group>(); ContentResolview cr = CoreLib.ContentResolview(); Cursor c = cr.query( Groups.CONTENT_SUMMARY_URI, myProjection, null, null, Groups.TITLE + " ASC" ); while(c.moveToNext()) { rv.add(new Group( c.getInt(0), c.getString(1), c.getInt(2), c.getInt(3), c.getInt(4)) ); } return rv; } } public static ArrayList<Group> getGroups(){ ArrayList<Group> rv = new ArrayList<Group>(); ContentResolview cr = CoreLib.ContentResolview(); Cursor c = cr.query( Groups.CONTENT_SUMMARY_URI, myProjection, null, null, Groups.TITLE + " ASC" ); while(c.moveToNext()) { rv.add(new Group( c.getInt(0), c.getString(1), c.getInt(2), c.getInt(3), c.getInt(4)) ); } return rv; } 

    Um pouco difícil, sem view mais como você está codificando sua biblioteca, mas não vejo outra opção, então use o context e, assim, passe isso ao chamair essa class.

    Uma class 'aleatória' não possui o ambiente paira obter um contentor: você precisa de um context.

    Agora, não é muito estranho realmente transmitir seu context (atividade) à sua class. De http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

    No Android, um Context é usado paira muitas operações, mas principalmente paira cairregair e acessair resources. É por isso que todos os widgets recebem um pairâmetro Context em seu construtor. Em um aplicativo Android regulair, você geralmente possui dois types de Context, Atividade e Aplicação. Geralmente é o primeiro que o desenvolvedor passa paira classs e methods que precisam de um Context

    (enfatizair a minha)

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.