J'aimerais avoir le nom du Activity
actuel à envoyer dans l'URI d'un HttpRequest
. Y a-t-il un moyen de faire cela sans se référer spécifiquement à la Activity
?
Je sais que je peux faire myActivity.class.toString()
mais c’est un moyen moins efficace de coder en dur "myActivity" puisque je fais une référence statique à mon Activity
. Existe-t-il un moyen plus général de faire cela en utilisant quelque chose comme 'ceci' (qui d'ailleurs ne fonctionne pas ici parce qu'il renvoie plus d'informations que ce qui est souhaité).
Utilisez this.getClass().getSimpleName()
pour obtenir le nom de l'activité.
A partir des commentaires, si vous êtes dans le contexte d'un OnClickListener
(ou d'une autre classe interne), spécifiez la classe manuellement:
MainActivity.class.getSimpleName()
Pour les puristes qui ne veulent peut-être pas utiliser la réflexion, une autre méthode consiste à utiliser le PackageManager
comme suit:
PackageManager packageManager = activity.getPackageManager();
try {
ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0);
Log.e("app", "Activity name:" + info.name);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Cependant, cela ressemble à beaucoup de travail juste pour faire la même chose que getClass().getName()
(et même pas getSimpleName()
). Mais je suppose que cela peut être utile pour quelqu'un qui veut plus d'informations sur l'activité que le nom de la classe.
ActivityManager am = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
this.currentActivity = taskInfo.get(0).topActivity.getClassName();
Log.i( "CURRENT Activity ", currentActivity);
string GetActivityClassName(Activity activity) //Receiving LoginActivity
{
//ComponentName
activity.ComponentName; //Output: "md5101a0260d0a0e5d40a0a9009be09b0c2.LoginActivity"
//LocalClassName
activity.LocalClassName; //Output: "md5101a0260d0a0e5d40a0a9009be09b0c2.LoginActivity"
//Java.Lang.Class.FromType.SimpleName
Java.Lang.Class.FromType(activity.GetType()).SimpleName; //Output "LoginActivity"
//Type.Name
activity.GetType().Name; //Output "LoginActivity"
}
First: ouvrez votre manifest.xml
fichier
vous trouverez le nom de votre paquet i.e. "com.company.projectname"
Then: Disons que le nom de votre activité est MainActivity
MainActivity.class.getCanonicalName() >output> "com.company.projectname.MainActivity"
OU
MainActivity.class.getSimpleName() >output> "MainActivity"
OU
MainActivity.class.getName() >output> "com.company.projectname.MainActivity"