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

안드로이드(android) 패키지명 클래스명에 대한질문입니다.

0 추천

이렇게해서 제 폰에 제가 깔은 패키지명이랑 클래스명을 받아와서 로그로 찍었는데

실행시킨 어플에 대한 패키지명이랑 클래스명이 아닌

com.sec.android.app.launch

com.android.launch2.launcher

라는 부분만 찍히더라구요..

어떻게 해야 제가 실행시킨 어플의 패키지명이랑 클래스명을

가져올 수 있을까요??ㅠㅠ

 

잘안보이실까봐 소스 넣겠습니다.

final ArrayList<String> arGeneral = new ArrayList<String>();
final ArrayList<String> pakcageNm = new ArrayList<String>();
final PackageManager pm = getPackageManager();
List<ApplicationInfo> list = pm.getInstalledApplications(0);
for (ApplicationInfo applicationInfo : list) {
    String name = String.valueOf(applicationInfo.loadLabel(pm));    // 앱 이름
    String pName = applicationInfo.packageName;   // 앱 패키지
    //Drawable iconDrawable = applicationInfo.loadIcon(pm);   // 앱 아이콘
    Intent intent = getPackageManager().getLaunchIntentForPackage(applicationInfo.packageName);
    if (intent != null) {
        arGeneral.add(name); //+" \n" + " [ " + pName + " ] "
        pakcageNm.add(pName);
    }
}
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arGeneral);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String mes;
        mes = arGeneral.get(position) + " 이(가) 실행";
        Toast.makeText(ProcessList.this, mes, Toast.LENGTH_SHORT).show();
        PackageManager pm = getPackageManager();
        Intent i = pm.getLaunchIntentForPackage(pakcageNm.get(position));
        // 선택한 패키지 실행
        ActivityManager activity_manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> task_info = activity_manager.getRunningTasks(9999);
        for (int z = 0; z < task_info.size(); z++) {
            Log.d("          now Activity", "         activity:" + task_info.get(z).topActivity.getPackageName());
            Log.d("          now ClassName", " >> " + task_info.get(z).topActivity.getClassName());
            Log.d("      pakcageNm", String.valueOf(pm.getLaunchIntentForPackage(pakcageNm.get(position))));
        } // 선택한 어플의 패키지와 클래스 name값을 로그로 띄운다
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(i);
    }
});
익명사용자 님이 2017년 6월 22일 질문

1개의 답변

0 추천
원하시는게 순수하게 내 패키지명을 찾는 것 이라면 간단 합니다.

activity 에서 코드를 추가 한다 치면

getApplicationContext().getPackageName()

만으로 얻을 수 있습니다. 클래스 명은 this.getClass().getSImpelName() 으로 얻을 수 있구요
aucd29 (218,390 포인트) 님이 2017년 6월 22일 답변
아 감사합니다! 채택해드려야되는데
제가 저 익명으로 올린걸 어떻게 하는지 몰라서
해드릴수가 없네요..ㅠㅠ
...