108 votes

Vérifier si l’application en est à sa première exécution

Je suis nouveau dans le développement Android et je veux configurer certains des attributs de l’application en fonction de l’application d’abord exécuté après l’installation. Existe-t-il un moyen de constater que l’application s’exécute pour la première fois, puis de configurer ses attributs de première exécution ?

5voto

AZ_ Points 7127
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.UUID;

    import android.content.Context;

    public class Util {
        // ===========================================================
        //
        // ===========================================================

        private static final String INSTALLATION = "INSTALLATION";

        public synchronized static boolean isFirstLaunch(Context context) {
            String sID = null;
            boolean launchFlag = false;
            if (sID == null) {
                File installation = new File(context.getFilesDir(), INSTALLATION);
                try {
                    if (!installation.exists()) {
                    launchFlag = true;                          
                        writeInstallationFile(installation);
                    }
                    sID = readInstallationFile(installation);

                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            return launchFlag;
        }

        private static String readInstallationFile(File installation) throws IOException {
            RandomAccessFile f = new RandomAccessFile(installation, "r");// read only mode
            byte[] bytes = new byte[(int) f.length()];
            f.readFully(bytes);
            f.close();

            return new String(bytes);
        }

        private static void writeInstallationFile(File installation) throws IOException {
            FileOutputStream out = new FileOutputStream(installation);
            String id = UUID.randomUUID().toString();
            out.write(id.getBytes());
            out.close();
        }
    }

> Usage (in class extending android.app.Activity)

Util.isFirstLaunch(this);

4voto

Snicolas Points 19644

Il n’y a aucun moyen de le savoir via l’API Android. Vous devez stocker un indicateur par vous-même et le rendre persistant dans une `` base de données ou à l’aide d’une base de données.

Si vous souhaitez baser certains éléments liés à la licence sur ce drapeau, je vous suggère d’utiliser un éditeur de préférences obscurci fourni par la bibliothèque LVL. C’est simple et propre.

Cordialement, Stephane

4voto

Djek-grif Points 230

Je ne suis pas sûr que ce soit un bon moyen de le vérifier. Qu’en est-il du cas où l’utilisateur utilise le bouton « effacer les données » des paramètres? SharedPreferences sera effacé et vous intercepterez à nouveau « première exécution ». Et c’est un problème. Je suppose qu’il est préférable d’utiliser InstallReferrerReceiver.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X