Liste de tous les extras de l'Intention
Pour le débogage des raisons que je veux la liste de tous les extras (et leurs valeurs) d'une Intention. Maintenant, la remise des clés n'est pas un problème
Set<String> keys = intent.getExtras().keySet();
mais pour obtenir les valeurs des clés est l'un pour moi, parce que certaines valeurs sont des chaînes de caractères, certains sont boolean... Comment pourrais-je obtenir les valeurs dans une boucle (boucle sur les touches) et écrire les valeurs dans un fichier? Merci pour tout conseil!
intent.getExtras().toString()
si tout ce que vous voulez est une représentation de chaîne. Voir la réponse ci-dessous pour plus de détails.- Cela ne semble pas fonctionner - retours par exemple
Bundle[mParcelledData.dataSize=764]
Vous devez vous connecter pour publier un commentaire.
Voici ce que j'ai utilisé pour obtenir des informations sur un sans-papiers (3e partie) intention:
Où
data
est l'intention. Assurez-vous de vérifier sibundle
est nulle avant la boucle.if (bundle == null) { return; }
FTWBundle bundle = data.getExtras();
Oùdata
est l'Intention. Pour android les débutants.value = "null"
.C'est la façon dont je définis la méthode utilitaire de vider tous les extras de l'Intention.
Vous pouvez le faire en une seule ligne de code:
Il renvoie à quelque chose comme:
"#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10a00000;component=com.mydomain.myapp/.StartActivity;sourceBounds=12%20870%20276%201167; l'.profil=0; fin"
À la fin de cette chaîne (la partie que j'ai mis en caractères gras), vous pouvez trouver la liste des extras (un seul supplémentaire dans cet exemple).
C'est selon le tour de la documentation:
"L'URI contient l'Intention de données que l'URI de base, avec un fragment supplémentaire décrivant l'action, les catégories, le type, les drapeaux, les colis, les composants et les extras."
Le get(String key) méthode de Bundle retourne un Objet. Votre meilleur pari est de faire tourner sur la touche mise à l'appel de get(String) sur chaque touche et à l'aide de toString() sur l'Objet de leur sortie. Ce qui fonctionnera le mieux pour les primitives, mais vous pouvez rencontrer des problèmes avec des Objets qui ne mettent pas en œuvre les méthodes toString().
Vous pouvez utiliser
for (String key : keys) { Object o = get(key);
pour retourner un Objet, appelgetClass().getName()
sur elle pour obtenir le type, puis faire un jeu de si nom.equals("String") type de choses à travailler sur la méthode fait appel, afin d'obtenir la valeur?Je voulais un moyen d'afficher le contenu d'une intention dans le journal, et pour être en mesure de le lire facilement, donc voici ce que je suis venu avec. J'ai créé un
LogUtil
classe, et puis il a pris ladumpIntent()
méthode @Pratique créé et modifié un peu. Voici à quoi ça ressemble:Espère que cela aide quelqu'un!
J'ai remarqué dans l'Android source de presque toutes les forces de la Liasse à unparcel ses données. Donc, si (comme moi), vous devez, pour ce faire, souvent à des fins de débogage, le ci-dessous est très rapide de type:
Désolé si c'est trop verbeux ou trop tard, mais c'était le seul moyen que j'ai pu trouver pour faire le travail. La plupart de facteur de complication est le fait que java n'a pas de passage par référence fonctions, de sorte que le get---méthodes Supplémentaires besoin d'un défaut de retour et ne peut pas modifier une valeur booléenne pour dire si oui ou non la valeur par défaut est retourné par hasard, ou parce que les résultats n'étaient pas favorables. À cette fin, il aurait été plus agréable d'avoir la méthode génère une exception que de retourner une valeur par défaut.
J'ai trouvé mes informations ici: Android Intention De La Documentation.
Ensemble De La Documentation
La Kotlin version de Pratique de la méthode utilitaire qui exporte tous les extras de l'Intention:
Si pour le débogage de tout ce que vous voulez est une chaîne de caractères (une sorte de tacite par les OP, mais pas explicitement indiqué), il suffit d'utiliser
toString
sur les extrasBundle
:Il retourne une chaîne de caractères tels que:
Documentation: Bundle.toString() (c'est malheureusement le défaut
Object.toString()
javadoc et en tant que tel tout à fait inutile ici.)