Android, cómo obtener el nombre del paquete?
En mi aplicación necesito saber el nombre del paquete. No tengo ningún problema cuando quiero agarrarlo en actividades pero no puedo tomarlo en otras clases. El código siguiente está trabajando en la actividad pero no sé porqué tiene problema en clase simple.
String packageName = getPackageName();
En mi clase intenté escribir este código:
- Android.os.BadParcelableException: ClassNotFoundException cuando unmarshalling: exception
- Pase la clase personalizada al fragmento
- ¿Cuál es el nombre del paquete de la aplicación de Google Play y de la aplicación de AndroidPIT?
- ¿Cómo se pasan las imágenes (mapas de bits) entre las actividades de androide mediante bundles?
- Liberación de 2 aplicaciones basadas en el mismo código pero nombre de paquete diferente
Context context = getApplicationContext(); String packageName = context.getPackageName();
Pero el compilador dijo que el método getApplicationContext()
no está definido para esta clase.
¿Cómo puedo tomar el nombre del paquete dentro de esta clase?
- ¿Un objeto serializable siempre se serializa cuando se pone en un paquete?
- Beneficio de usar Parcelable en lugar de serializar objetos
- Al pasar argumentos Android DialogFragment, onCreateDialog agument paquete es inesperadamente nulo
- Prueba de la unidad Android: Bundle / Parcelable
- Cómo agregar el "Pack de iconos de la barra de acciones" a Android Studio
- El servicio de Android no se puede iniciar debido a un ClassNotFoundException de una clase que ya no existe
- Crear / iniciar sesión usuario desde un dispositivo móvil mediante Symfony2 y FOSUserBundle
- Android: Fuerza los datos que se envían a través de radio vs WiFi
La forma simple o de otra forma es pasar Contexto al constructor de clase auxiliar:
MyClassConstructor(Context context){ String packageName = context.getPackageName(); }
Usando la instancia de la clase puedes obtener el nombre del paquete usando getClass().getPackage().getName()
a la instancia
Código de muestra
ClassA instanceOfClass = new ClassA(); String packageName = instanceOfClass.getClass().getPackage().getName(); System.out.println("Package Name = " + packageName);
Si utiliza gradle build, use esto: BuildConfig.APPLICATION_ID
para obtener el nombre del paquete de la aplicación.
Utilice los siguientes
ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE); String packageName2 = am.getRunningTasks(1).get(0).topActivity.getPackageName();
GetApplicationContext () es un método de ContextWrapper (super clase de actividad).
Si quieres usarlo en tus clases tendrás que pasar una referencia de un Contexto o su subclase y luego usarlo
http://developer.android.com/reference/android/content/ContextWrapper.html#getPackageName ()
class MyClass { Context mContext; public MyClass(Context ctx) [ this.mContext = ctx; } String getPackageName() { mContext.getPackageName(); } }
La respuesta más simple es hacer un constructor de nombre de clase y pasar el ApplicationContext en ese constructor –
ClassConstructor(Context context){ String packageName = context.getPackageName(); }