0 votos

Hola, estoy intentando que me devuelva en nombre del paquete con:

Uri uri = Uri.parse("package:" + BuildConfig.LIBRARY_PACKAGE_NAME);

Y uri me devuelve el nombre del paquete "es.dmoral.toasty"

 

En AndroidManifest.xml tengo puesto en nombre del paquete como:

package="com.darwindeveloper.pruebas">

Y ha creado un archivo BuildConfig.class con la siguiente información:

     //
     // Source code recreated from a .class file by IntelliJ IDEA
     // (powered by FernFlower decompiler)
     //
     
     package es.dmoral.toasty;
     
     public final class BuildConfig {
         public static final boolean DEBUG = false;
         public static final String APPLICATION_ID = "es.dmoral.toasty";
         public static final String BUILD_TYPE = "release";
         public static final String FLAVOR = "";
         public static final int VERSION_CODE = 141;
         public static final String VERSION_NAME = "1.4.1";
     
         public BuildConfig() {
         }
     }

No sé porque crea ese archivo con esa información, por lo que he leído se crea en el archivo classes.jar, he borrado ese archivo, y me vuelve a mostrar como nombre del paquete "es.dmoral.toasty"

Que se puede hacer para que no cree ese archivo con esa información, y como obtener el nombre del paquete que realmente es ??

 

Un saludo.

por en Android

1 Respuesta

0 votos

El nombre que indicas "es.dmoral.toasty" parece estás utilizando el paquete https://github.com/GrenderG/Toasty que debes importar en algún momento, es un poco raro que te esté sobrescribiendo la variable LIBRARY_PACKAGE_NAME.

¿Has probado a obtener el nombre del paquete con (en el oncreate)?

NombrePaquete = getApplicationContext().getPackageName();

 

por

Que tal Ramón, la verdad es que el paquete Toasty lo estoy utilizando desde hace tiempo y no he tenido ningun problema.

Para obtener el nombre del paquete estaba utilizando:

Uri uri = Uri.parse("package:" + BuildConfig.APPLICATION_ID);

Pero he leido que esta obsoleto, que en su lugar hay que utilizar LIBRARY_PACKAGE_NAME, y aquí empezaron los problemas, no se porque crea ese archivo "BuildConfig.class" con esa información.

 

Estoy probando ahora con lo que me dices, "NombrePaquete = getApplicationContext().getPackageName();" he creado un botón para poder desinstale la aplicación, y que me ha estado funcionando hasta ahora, 

Intent intent = new Intent(Intent.ACTION_DELETE);
String paquete = getApplicationContext().getPackageName();
intent.setData(Uri.parse("package:" + paquete));
startActivity(intent);

Pero ahora, he probado a hacer lo que me dices para detectar el nombre del paquete, y que si lo detecta, no consigo desinstalar la aplicación.

:(

 

No puedo editar el post, y no puedo cambiar el codigo para que se pueda ver, a mi me muestra en negro

¿Desde el emulador no te deja desinstalar la App? Algo le pasa raro, es mejor que desinstales completamente y reinstales, y que borres cache y datos por si acaso.

Si no puedes desde el sistema operativo, prueba a desinstalar la App desde el ADB con el comando:

adb uninstall com.mi.paquete

Tienes más información del ADB en: https://developer.android.com/studio/command-line/adb?hl=es

Por cierto, se ve el código bien.
Ya está Ramon, estoy probando el emulador con Android 10, y parece que hay un problema con este emulador, luego he probado el emulador con Android 11, y aquí si me deja desinstalar la aplicación.

Lo que si estoy viendo es que por ejemplo al pulsado el menú de Opciones “el de los tres puntitos” hay que pulsar varias veces para que se muestre, he probado con otras versiones de Android en el emulador, y paso lo mismo.

Tengo programado para que al pulsar la flecha atrás física del móvil dos veces en el transcurso de un limite de tiempo, la aplicación se cierre, pero lo he desactivado, y siguen sin funcionar bien los botones, hay que pulsar varias veces, y esto ya no pasa solo en el emulador, he pasado la aplicación al móvil, y pasa lo mismo.

 

Alguna idea de porque puede estar pasando esto?
No sabría decirte que le pasa al Android 10, quizás con una actualización se solucione.

Si te funciona mejor el 11, te recomiendo que trabajes con él, pues te será más cómodo.

Este codigo:

String paquete = getApplicationContext().getPackageName();

para poder ponerlo en un Fragment y no de error getApplicationContext() 

lo estoy haciendo asi:
 

String paquete = getActivity().getApplicationContext().getPackageName();

pero no estoy seguro si es corrector, porque me muestra una advertencia que el metodo getApplicationContext() devuelve un valor nulo, bueno eso entiendo mas o menos de la tracucción del ingles, que no es mi fuerte, jeje

Y sobre el otro tema de tener que pulsar varias veces los botones para que se pueda realizar esa acción, sabes a que puede pasar ?

 

Un saludo.

 

Si no recuerdo mal "getActivity()" ya era el context, por lo que deberías de poder llamar directamente a "getPackageName()" (más información sobre context en https://jarroba.com/context-de-android/ ):

String paquete = getActivity().getPackageName();

 

Lo de varias pulsaciones, se me ocurre que no esté correctamente escrito algún onclick y esté haciendo cosas raras.