Est-il possible d'obtenir de l'application de contexte dans un Android Projet de Bibliothèque?
Je voudrais obtenir le contexte de l'application qui a de référence/hébergé ma bibliothèque au moment de l'exécution à l'intérieur d'une classe de mon projet de bibliothèque. Est-il possible? Si oui, comment?
Grâce
Mise à jour
Je ne veux pas que mon utilisateur à passer contexte dans les paramètre de mon projet de bibliothèque car il est possible que mon projet de bibliothèque sera appelé par JNI et je n'ai aucune idée de comment je peux les mettre en contexte dans la JNI et le passer à Java couche.
- getcontexteapplication()?
- Si u utilisation de votre bibliothèque à l'intérieur d'un autre projet, le contexte de votre bibliothèque sera le cadre du projet. Que voulez-vous faire avec le contexte?
- aucune de ces méthodes est disponible à l'intérieur de mon android projet de bibliothèque
- J'ai besoin de Contexte à l'intérieur du projet de bibliothèque pour effectuer certaines opérations, mais je ne veux pas demander à l'utilisateur de passer contexte explicitement dans un certain nombre de paramètres. Comment puis-je indépendamment obtenir l'application actuelle du contexte à l'intérieur de ma bibliothèque?
- le courant? avec getcontexteapplication, même avec "ce" (si vous êtes dans une classe étend de l'Activité), Le contexte est toujours indépendant de vos bibliothèques.
- Pas de ma classe ne s'étendent pas à l'activité, c'est une simple classe
- double possible de Comment dois-je faire pour obtenir Contexte dans ce cas?
- si vous classe est une simple classe, vous avez BESOIN de transmettre explicitement le contexte.
Vous devez vous connecter pour publier un commentaire.
Oui.
Passer comme paramètre.
Puis comprendre "comment vous pouvez les mettre en contexte dans la JNI et le passer à Java couche". J'imagine que vous devez passer comme n'importe quel autre objet. Comme @Blundell a noté, vous n'avez pas vraiment d'autre option.
Il existe un autre moyen, ajouter une application de classe dans votre projet de bibliothèque:
Ensuite dans votre projet de faire de la vraie classe d'application s'étendre LibApp:
Assurez-vous que vous avez "Nom" défini dans AndroidManifest:
et que votre Appli classe dans le package de base.
Vous pouvez ensuite utiliser LibApp.getContext (), votre projet de bibliothèque afin d'obtenir l'application de contexte de l'application qui utilise la bibliothèque.
Cela peut ne pas être une bonne solution, mais cela fonctionne pour moi.
Je le partage parce qu'il pourrait être utile à quelqu'un d'autre.
Application
à partir de votre classe est une mauvaise pratique, - il crée des problèmes d'héritage multiple, et nécessite la création d'une classe supplémentaire pour la bibliothèque de l'intégration. Le meilleur moyen est d'avoir une sorte deinit
méthode qui vous permettra d'avoirContext
paramIl y a une autre façon de les mettre en contexte dans jni, ni le passage d'un paramètre, ni d'économie d'contexte par vous-même, mais par l'aide de l'api android.
J'ai trouvé qu'il y a une classe nommée:
dans le code source. Et la fonction statique
getInitialApplication
peut retourner un
Application
objet. Mais il doit être appelé dans le thread principal, et la classe est caché.De toute façon vous pouvez l'utiliser en reflétant dans java. Et vous pouvez simplement utiliser
FindClass()
etFindStaticObjectMethod()
pour découvrir la méthode, et de l'utiliser.Espérons que cela aide.
Dans votre projet de bibliothèque ajouter une dépendance à votre projet principal. Dans l'Ide, il le fera pour vous lorsque vous essayez de faire référence à cette variable globale. Dans Eclipse, je ne suis pas sûr...
Je voudrais le passer en paramètre ou passer à un singleton dans la bibliothèque.
Avoir l'application principale application s'étendent de la bibliothèque de la classe d'application est une mauvaise idée coz en java, vous ne pouvez étendre la fois à partir d'une classe. Si votre application nécessite de passer à une autre bibliothèque, vous serez en difficulté.