2011-08-03 2 views
0

Je construis un SDK et j'ai une classe appelée par exemple mainClass, donc dans l'application MainActivity je laisse les développeurs (qui utilisent le SDK) passer des données comme la clé d'application dans le constructeur mainClass puis ils appellent la fonction de registre service d'enregistrement seulement la première fois que l'application était ouverte (en utilisant la préférence). Le problème est lorsqu'un développeur modifie la clé de l'application et déploie à nouveau l'application (avec la nouvelle clé d'application) la préférence de l'application (appFirstOpen = false) reste là et l'enregistrement de la nouvelle touche d'application ne passera pas. J'ai pensé à vérifier si la clé de l'application a changé dans le constructeur mais cela semble être un surcoût. est là pour savoir si l'application est redéployée pour effacer la préférence ou est-il une autre façon d'obtenir ce problème.Comment savoir si l'application Android est redéployée?

+0

Est-ce que votre SDK ou le programmeur gère les préférences? –

+0

Le SDK gère les préférences. – Jimmy

+0

Pouvez-vous créer vos préférences par ID d'application? –

Répondre

0

Pour répondre à la question dans le titre, il n'y a pas de nouveau drapeau de déploiement. Vous devrez donc vérifier d'autres facteurs tels que l'identifiant de l'application, dans votre application, ou le PackageInfo ou le ApplicationInfo du système. Si vous voulez juste effacer les données de l'application, vous pouvez effacer les données manuellement dans Paramètres -> Applications, ou simplement effacer les données de préférence à chaque fois avec SharedPreferences.Editor.clear().

Il semble que vous rencontriez un problème lorsque la même application est exécutée sur un nouvel ID d'application. Cela me suggère que travailler avec les frais généraux de vérification de l'identifiant de l'application serait utile. Je suggère d'avoir un fichier de préférences par identifiant d'application, il sera capable de gérer les conditions appFirstOpen.

Questions connexes