PDA

Ver la Versión Completa : [ SOLUCIONADO ] Lanzar una actividad cada vez que cambia el version code


gonza28
14/10/15, 16:11:10
Hola.
Podrian darme una mano?
Estoy necesitando poner un mini tutorial a una app. Algo instructivo debido a que no siempre se trata de gente jovenes dominantes de la tecnologia. Tambien hay gente mayor.

Pero encontré una libreria que me gustó mucho: appIntro.
Es algo como Tapatalk, si lguien tiene tapatalk se dará cuenta que cada vez que se actualiza, la abres, pasas por un mini tuto con una actividad y un par de fragmentos. Con la libreria ya lo tengo todo.
Pero necesito lanzar esta actividad cada vez que la app se actualiza o como ultimo recurso, lanzarla por unica vez, la primera vez que se abre la app.

Ojalá alguien sepa como hacerlo.

Muchas gracias. Saludos.

kriogeN
14/10/15, 18:27:06
Yo tenía una app que también tenía tutorial inicial, lo que hacía era almacenar un booleano en una SharedPreference con el nombre "vistoTutorial".

Si por alguna razón ese tutorial cambiaba en alguna versión posterior de la app (a lo mejor pasaban 2 o 3 versiones sin tenerlo que cambiar pero en la 4ª aparecía una opción nueva que si que era suficientemente novedosa como para explicarla) entonces modificaba el nombre a "vistoTutorial2".

Luego además ya al final rizaba el rizo, y es que los Fragments involucrados en una versión ya vista no los añadía al ViewPager (lo hacía con un ViewPager).

gonza28
14/10/15, 21:30:02
Yo tenía una app que también tenía tutorial inicial, lo que hacía era almacenar un booleano en una SharedPreference con el nombre "vistoTutorial".

Si por alguna razón ese tutorial cambiaba en alguna versión posterior de la app (a lo mejor pasaban 2 o 3 versiones sin tenerlo que cambiar pero en la 4ª aparecía una opción nueva que si que era suficientemente novedosa como para explicarla) entonces modificaba el nombre a "vistoTutorial2".

Luego además ya al final rizaba el rizo, y es que los Fragments involucrados en una versión ya vista no los añadía al ViewPager (lo hacía con un ViewPager).
Ya tengo la actividad y los fragmentos funcionando. Si lanzas la actividad desde un botón, todo funciona perfectamente.

Pero lo que necesito es llamar a esa actividad si el versión code cambia. Y llamarla por única vez. Hasta que el versión code vuelva a cambiar.
O de otra manera cualquiera.
Si ves algo parecido por ahí, hazme saber por favor.


Enviado desde mi SM-N910U mediante Tapatalk

kriogeN
14/10/15, 22:15:52
El Version Code se obtiene así:

getPackageManager().getPackageInfo(context.getPack ageName(), 0).versionCode

A partir de ahí, es lo mismo que te he dicho antes pero almacenando el Version Code en una SharedPreference, si es distinto del que tenías almacenado antes lanzas la Activity.

gonza28
14/10/15, 22:53:54
Lo tengo. Con tu ultimo mensaje, recordé un viejo proyecto de tematizacion cuando creabamos temas para Nova Launcher. alli tenia algo. este tema queda marcado como solucionado para alguno que tenga el mismo problema.

En la actividad principal o en mi caso en la clase splash: Bienvenido.class

public class MainActivity extends AppCompatActivity {


private SharedPreferences prefs;



override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


prefs = getSharedPreferences(getResources().getString(R.st ring.app_name), 0);
checkBuild();

...............


}
public void checkBuild() {
int buildNum = prefs.getInt("Build Number", 1);
int currentVersion = 0;

try {
currentVersion = getPackageManager()
.getPackageInfo(getPackageName(), 0).versionCode;
}
catch (NameNotFoundException e) {
e.printStackTrace();
}
if(currentVersion > buildNum) {
Intent intent = new Intent(MainActivity.this, Prueba.class);
startActivity(intent);
finish();
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("Build Number", currentVersion);
editor.commit();
}
}

.............

Cada vez que el versionCode cambia por una actualizacion, se lanzará la actividad, o un dialogo o lo que sea.

A modo de prueba, basta con lanzar una Snackbar

public void checkBuild() {
int buildNum = prefs.getInt("Build Number", 1);
int currentVersion = 0;

try {
currentVersion = getPackageManager()
.getPackageInfo(getPackageName(), 0).versionCode;
}
catch (NameNotFoundException e) {
e.printStackTrace();
}
if(currentVersion > buildNum) {
Snackbar.make(
findViewById(R.id.coordinatorLayout), R.string.cargando_datos,
Snackbar.LENGTH_LONG)
.show();
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("Build Number", currentVersion);
editor.commit();
}
}

.............

Gracias y saludos.

kriogeN
15/10/15, 00:06:17
Sólo un apunte, el valor por defecto de la SharedPreference debería ser 0, y no 1. Porque si no en la primera versión de tu app no saldrá el tutorial, lo hará a partir de la segunda versión.