마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

최상위 액티비티 이름 가져오는 방법

0 추천
현재 실행중인 앱에서 최상위 액티비티 이름을 가져오고 싶은데요.

RunningTask 는 메소드가 사라져서 사용할수없고 ...

다른 방법이 없을까요 ?
컴맹장군 (120 포인트) 님이 2016년 11월 24일 질문

1개의 답변

0 추천
//만약 최상위 액티비티가 MainActivity 이고 com.sample.android 패키지 아래 있다라고 가정한다면
String packageName = getPackageName();
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(packageName);

String classNameWithPath = launchIntent.getComponent().getClassName();
//classNameWithPath --> com.sample.android.MainActivity 
String className = launchIntent.getComponent().getShortClassName();
//className --> .MainActivity
//앞에 . 이 붙어서 구해집니다.
빅배스 (4,260 포인트) 님이 2016년 11월 24일 답변
최상위 액티비티가 MainActivirt가 아닌 (제 프로젝트에서 봤을때) SelectActivity이거나 TalkActivity 일때도 항상  className  에는 MainActivity만 나오네요..
SelectActivity , TalkActivity 이 액티비티들이 최상위 액티비티라고 판단한 이유는
앱에서 보여지는 화면상 가장 위에있어서 판단한겁니다.
추가로 제 패키지 경로는 com.example.kimcheol.SomoApp 입니다
빅배스님이 알려주신 내용은 최상위 액티비티가 아니라 패키지내 최초의 액티비티네요
이번에도 제가 재대로 이해했는지 모르겠네요

ActivityManager am = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);

Log.i( "CURRENT Activity ",  taskInfo.get(0).topActivity.getShortClassName());
getRunningTasks 가 금지됐다고 말했는데도 5년전 예제를 들고오는 당신은 대체....
...