Получить имя активности динамически - Android

Я хотел бы получить название текущегоActivity быть отправленным вместе в URIHttpRequest, Есть ли способ сделать это, не обращаясь конкретно кActivity?

Я знаю, что могу сделатьmyActivity.class.toString() но это всего лишь менее эффективный способ жесткого кодирования "myActivity" так как я делаю статическую ссылку на мойActivity, Есть ли более общий способ сделать это, используя что-то вроде «это»? (который, кстати, здесь на самом деле не работает, потому что он возвращает больше информации, чем требуется).

 kcoppock17 мая 2012 г., 01:38
Я не знаю, как это работает, но ты не можешь просто использоватьthis.getClass().getSimpleName() вместо этого?

Ответы на вопрос(4)

Первый открыть свойmanifest.xml фай

ты найдешь название своего пакета, т."com.company.projectname"

Затем Допустим, ваша деятельность называетсяMainActivity

MainActivity.class.getCanonicalName() >output> "com.company.projectname.MainActivity"

ИЛ

MainActivity.class.getSimpleName() >output> "MainActivity"

ИЛ

MainActivity.class.getName() >output> "com.company.projectname.MainActivity"
Решение Вопроса

this.getClass().getSimpleName() чтобы получить название действия.

Из комментариев, если вы находитесь в контекстеOnClickListener (или другой внутренний класс), укажите класс вручную:

MainActivity.class.getSimpleName()

 JakeWilson80117 мая 2012 г., 02:41
getApplicationContext () или getBaseContext () ..
 evanmcdonnal17 мая 2012 г., 02:04
Это хорошее предложение, но не то, что я ищу. Он работает внутри onCreate (), но не из моего onClickListener, где я хотел бы получить имя Activity. Если я не могу, нет лучшего решения, чем использовать постоянную строку.
 zundi22 нояб. 2014 г., 16:21
Вы должны заметить, что если вы собираетесь использовать ProGuard, имя вашего класса будет запутано, а запутанное имя - это то, что вы получите в бэкэнде.
 user90130904 окт. 2012 г., 21:48
Чтобы сделать это в onClickListener, вы должны сделать «MyActivityName.this.getClass (). GetSimpleName ()»
 shariful islam19 июл. 2018 г., 18:02
Спасибо. Я искал это.
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);

которые не хотят использовать рефлексию, альтернативный способ - использоватьPackageManager следующее

PackageManager packageManager = activity.getPackageManager();
try {
  ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0);
  Log.e("app", "Activity name:" + info.name);
} catch (NameNotFoundException e) {
  e.printStackTrace();
}

Как бы то ни было, это большая работа, чтобы сделать то же самое, что иgetClass().getName() (и даже неgetSimpleName()). Но я думаю, что это может быть полезно для тех, кто хочет получить больше информации об активности, чем просто имя класса.

Ваш ответ на вопрос