Ottieni il nome dell’attività in modo dinamico – Android

Mi piacerebbe ottenere il nome dell’attività corrente da inviare lungo l’URI di una richiesta HttpRequest . C’è un modo per farlo senza fare riferimento specificamente Activity ?

So che posso fare myActivity.class.toString() ma questo è solo un modo meno efficiente di codificare hard “myActivity” poiché sto facendo un riferimento statico alla mia Activity . C’è un modo più generale per farlo usando qualcosa come “this” (che btw in realtà non funziona qui perché restituisce più informazioni di quanto desiderato).

Usa this.getClass().getSimpleName() per ottenere il nome dell’attività.

Dai commenti, se sei nel contesto di un OnClickListener (o un’altra class interna), specifica la class manualmente:

MainActivity.class.getSimpleName()

Per i puristi che potrebbero non voler utilizzare la riflessione, un modo alternativo è utilizzare il PackageManager come segue:

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

Tuttavia questo sembra un sacco di lavoro solo per fare lo stesso di getClass().getName() (e nemmeno getSimpleName() ). Ma immagino possa essere utile per qualcuno che vuole più informazioni sull’attività oltre al nome della class.

 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); 

Primo: apri il file manifest.xml

troverai il nome del tuo pacchetto, ad esempio "com.company.projectname"

Quindi: diciamo che il nome della tua attività è MainActivity

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

O

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

O

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