2011-12-27 28 views
9

En mi aplicación, necesito saber el nombre del nombre del paquete. No tengo ningún problema cuando quiero tomarlo en actividades, pero no puedo tomarlo en otras clases. El siguiente código funciona en actividad, pero no sé por qué tiene problemas en la clase simple.android, cómo obtener el nombre del paquete?

String packageName = getPackageName(); 

En mi clase I tratado de escribir este código:

Context context = getApplicationContext(); 
String packageName = context.getPackageName(); 

pero compilador dijo getApplicationContext() método no está definida para esta clase.

¿Cómo puedo tomar el nombre del paquete dentro de esta clase?

+0

Por qué la downvote? – barry

Respuesta

11

La forma simple u otra es pasar el contexto al constructor de la clase auxiliar:

MyClassConstructor(Context context){ 

     String packageName = context.getPackageName(); 
} 
14

Usando instancia de la clase se puede obtener el nombre de paquete utilizando getClass().getPackage().getName() a la instancia

Código de ejemplo

ClassA instanceOfClass = new ClassA(); 
String packageName = instanceOfClass.getClass().getPackage().getName(); 
System.out.println("Package Name = " + packageName); 
+0

¿Pero no está creando una nueva instancia completa de ClassA que en realidad va a realizar algún código por sí mismo sin una buena razón? – Lumis

+0

Tengo una biblioteca en mi proyecto y transfiero el contexto de mi proyecto a lib. The lib invoca context.getPackageName() que obtiene el nombre del paquete de lib no el nombre del paquete de mi proyecto. ¿Cómo podría la lib obtener el nombre del paquete de mi proyecto? el contexto del proyecto? –

0

Uso siguiente

ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE); 

         String packageName2 = am.getRunningTasks(1).get(0).topActivity.getPackageName(); 
2

Si utiliza la creación de gradle, use esto: BuildConfig.APPLICATION_ID para obtener el nombre del paquete de la aplicación.

-1

respuesta más simple es hacer un nombre de clase constructor y pasar el Application Context en ese constructor -

ClassConstructor(Context context){ 

     String packageName = context.getPackageName(); 
} 
+1

Al publicar respuestas, considere si su respuesta aporta algo que no se ha dicho en otras respuestas. – laalto

Cuestiones relacionadas