안녕하세요.

 

특별한 명칭이 생각이 안나 서브어플이라고 했습니다.

 

설명을 드리자면..

 

A라는 어플은 단독으로는 사용을 못합니다.

B라는 어플에서 A를 사용하기 위해 data를 포함하여 intent로 A를 실행 시킵니다.(아래 소스 참조)

그럼 A는 필요 처리를 하고 완료가 되면 B로 결과물을 보내주는데요.

 

어플 개발할때 메인페스트에 <category android:name="android.intent.category.LAUNCHER" /> 를 제거하면 바탕에 아이콘이 생성이 안됩니다.

그런데 B에서 아래와 같이 하니 A를 찾지 못합니다.

 

PackageManager pm = getPackageManager();

   Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
   mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

   List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
   Collections
     .sort(appList, new ResolveInfo.DisplayNameComparator(pm));
   for (int i = 0; i < appList.size(); i++) {
    if (appList.get(i).loadLabel(pm).toString().equals("app_name")){
     Intent intent = new Intent();
     intent.setAction(Intent.ACTION_MAIN);
     intent.addCategory(Intent.CATEGORY_LAUNCHER);
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
       | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
     intent.setComponent(new ComponentName(appList.get(i).activityInfo.applicationInfo.packageName, appList.get(i).activityInfo.name));
     startActivity(intent);
     break;
    }
   }

 

아마 위에 메인페스트에서 뺐던것 때문에 그런것 같습니다.

 

이런경우 A를 개발할때 어떻게 해야 되나요?

 

 

profile

give & take