Necesito escribir algunas clases de utilidades por mi cuenta y necesito el nombre del paquete de la aplicación de Android. Mientras encontré el packageManager que solo se puede usar en Activity y demás, tiene contexto. Solo quiero obtener el nombre del paquete en mi clase, que se usará en la aplicación de Android. Entonces, ¿cómo puedo hacer esto? ¡Gracias!¿Cómo puedo obtener el nombre del paquete en android?
Respuesta
Uso: getPackageManager().getPackageInfo(getPackageName(), 0).packageName
O simplemente MyContext.getPackageName()
También puede crear una función :
public String getPackageName(Context context) {
return context.getPackageName();
}
gracias, tal vez no describí claramente, es una clase ordinaria, por lo que no tiene Contexto. La clase se empacará en un contenedor que se utilizó en la aplicación de Android. Por lo tanto, no puedo obtener el método para llegar a ella. – user898366
Entonces crea una función como esa: 'MyFunction (Context MyContext) { MyContext.getPackageName() }' – Guillaume
se puede obtener el nombre del paquete de la aplicación instalada:
ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
PackageManager pm = getApplicationContext().getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
y si usted quiere encontrar el nombre del paquete de la aplicación:
context.getPackageName();
gracias, tal vez no describí claramente, es una clase ordinaria, por lo que no tiene Contexto. La clase se empacará en un contenedor que se utilizó en la aplicación de Android. Por lo tanto, no puedo obtener el método para alcanzarlo. Gracias todos ustedes, pero toda su respuesta es la misma. – user898366
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
get a list of installed apps.
packages = pm.getInstalledApplications(0);
ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
for (ApplicationInfo packageInfo : packages) {
//packageInfo.packageName contains package name
}
gracias, tal vez no describí claramente, es una clase normal, por lo que no tiene Contexto. La clase se empacará en un contenedor que se utilizó en la aplicación de Android. Por lo tanto, no puedo obtener el método para llegar a ella. Gracias todos ustedes, pero toda su respuesta es la misma. – user898366
entonces puede enviar una referencia al contexto y puede usarlo de esta manera – Rasel
OK, creo que debo leer los datos estáticos afuera. – user898366
puede crear una clase Util esta manera:
public class AppInfo{
private static Context cxt;
public static String PACKAGE_INFO;
public static String init(Context context){
cxt = context;
PACKAGE_INFO = cxt.getPackageName();
}
}
entonces usted puede usarlo de esta manera
public class MyActivity extends Activity{
@Override
public void onCreate(Bundle bundle){
...
AppInfo.init(getApplicationContext());
...
}
}
entonces se le puede llamar de esta manera:
public class someClass{
public void someMethod(){
String packageInfo = AppInfo.PACKAGE_INFO;
//Do what you wish
}
}
getApplicationContext().getPackageName()
dará el paquete nombre de edad
no, no uses esto. – Sakiboy
¿por qué? Siempre dé la razón si le piden a alguien que no la use. Tampoco sé por qué pidió no usar esto. –
Esto recuperará el nombre del paquete incorrecto. Vea mi respuesta a continuación para obtener siempre el nombre correcto del paquete 'java'. Su respuesta puede ser modificada por gradle produciendo así nombres de paquetes "imprecisos" (es decir, se aplicará la depuración, versión o cualquier versión de compilación que haya configurado) – Sakiboy
he visto las dos formas siguientes para obtener el nombre del paquete a partir de una variable de contexto:
context.getPackageManager().getPackageInfo(context.getPackageName(), 0).packageName
y
context.getPackageName()
¿No será que siempre dan la misma respuesta? ¿Es preferible usar una forma sobre la otra en ciertas circunstancias?
La siguiente constante está disponible sin necesidad de un contexto.
BuildConfig.APPLICATION_ID
creo getPackageName()
está disponible directamente en la actividad sin llamar getApplicationContext
. Lo revisé yo mismo. Trabajando bien.
Agregue esto a su clase de utilidades. Se asegura de manejar diferentes "sabores" y versiones de depuración/liberación, como otras respuestas no:
@Nullable
public static String getApplicationPackageName(@NonNull Context context)
{
final PackageInfo packageInfo = getPackageInfo(context);
if (packageInfo.applicationInfo == null)
{
return null;
}
// Returns the correct “java” package name that was defined in your
// AndroidManifest.xml.
return packageInfo.applicationInfo.packageName;
}
// Convenience method for getting the applications package info.
@NonNull
private static PackageInfo getPackageInfo(@NonNull final Context context)
{
final PackageManager packageManager = context.getPackageManager();
try
{
return packageManager.getPackageInfo(context.getPackageName(), 0);
}
catch (final PackageManager.NameNotFoundException ignored)
{
//noinspection ConstantConditions: packageInfo should always be available for the embedding app.
return null;
}
}
- 1. android, cómo obtener el nombre del paquete?
- 2. Android: Obtener nombre de la aplicación (no Nombre del paquete)
- 3. obtener el nombre de la aplicación del nombre del paquete
- 4. Oracle PL/SQL: cómo obtener la pila, el nombre del paquete y el nombre del procedimiento
- 5. cambiar el nombre del proyecto y el nombre del paquete
- 6. ¿Cómo puedo obtener el nombre del directorio actual en Javascript?
- 7. Obtener el nombre del fabricante en el dispositivo Android
- 8. ¿Cómo obtener el nombre de una clase sin el paquete?
- 9. Alias o alias del nombre del paquete
- 10. ¿Cómo obtener el nombre de la aplicación instalada en android?
- 11. Cómo obtener el nombre del tema actual en Magento
- 12. ¿Cómo puedo obtener el nombre del elemento con jQuery?
- 13. Android: ¿Cómo obtener el nombre Disponibles imagen
- 14. ¿Cómo obtener el nombre completo del tipo?
- 15. Nombre del paquete de variables con Maven Android Plugin
- 16. Log4J nombre del show paquete
- 17. ¿Cómo puedo obtener el primer nombre (o nombre completo) del usuario del teléfono?
- 18. obtener actividad ejecutable nombre del paquete desde adb
- 19. ¿Cómo puedo obtener el javadoc de todos los métodos con una Anotación específica, con el nombre del método y el nombre del paquete/clase?
- 20. ¿Cómo obtener el nombre de la aplicación en android?
- 21. javadoc sin nombre del paquete
- 22. ¿Cómo obtener el ID del proceso del nombre del proceso?
- 23. Obtener el nombre del elemento
- 24. Android - ¿Cómo iniciar una aplicación de terceros con el nombre del paquete?
- 25. ¿Cómo se llama una subrutina de un paquete, dado el nombre del paquete en Perl?
- 26. Cómo obtener el nombre del país
- 27. (Django) cómo obtener el nombre del mes?
- 28. jquery cómo obtener el nombre del padre
- 29. ¿Cómo obtener solo el nombre del archivo en el preprocesador?
- 30. ¿Cómo puedo importar un paquete usando __import __() cuando el nombre del paquete solo se conoce en tiempo de ejecución?
¿necesita el nombre del paquete de la aplicación instalada? – Rasel
¡No es necesario! – Guillaume