I'd like to get the name of the current Activity to be sent along in the URI of an HttpRequest. Is there a way to do this without referring specifically to the Activity?
I know I can do myActivity.class.toString() but this is just a less efficient way of hard coding "myActivity" since I'm making a static reference to my Activity. Is there a more general way to do this using something like 'this' (which btw doesn't actually work here because it returns more information than what's desired).
Use this.getClass().getSimpleName() to get the name of the Activity.
From the comments, if you're in the context of an OnClickListener (or other inner class), specify the class manually:
MainActivity.class.getSimpleName()
For purists out there who may not want to use reflection, an alternative way is to use the PackageManager as follows:
PackageManager packageManager = activity.getPackageManager();
try {
ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0);
Log.e("app", "Activity name:" + info.name);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
However this seems like a lot of work just to do the same as getClass().getName() (and not even getSimpleName()). But I guess it may be useful for someone who wants more information about the activity than just the class name.
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);
First: open your manifest.xml file
you will find your package name i.e. "com.company.projectname"
Then: lets say your activity name is MainActivity
MainActivity.class.getCanonicalName() >output> "com.company.projectname.MainActivity"
OR
MainActivity.class.getSimpleName() >output> "MainActivity"
OR
MainActivity.class.getName() >output> "com.company.projectname.MainActivity"
For Xamarin
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"
}
来源:https://stackoverflow.com/questions/10628152/get-activity-name-dynamically-android