이해는 안되지만, 가끔 공유하기 창에 특정 앱만 표시되게 해달라는 갑님이 계신다. 굳이 다이얼로그를 따로 만들 필요없이 이렇게만 하면 된다.
String url = "http://google.com"; Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(shareIntent, 0); if (resInfo.isEmpty()) { Log.i("###", "공유할 수 있는 앱 없음"); return; } List<Intent> targetedShareIntents = new ArrayList<>(); for (ResolveInfo resolveInfo : resInfo) { String packageName = resolveInfo.activityInfo.packageName; Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND); targetedShareIntent.setType("text/plain"); // 페이스북, 카카오톡, 카카오 스토리만 표시 if (packageName.contains("com.facebook.katana") || packageName.contains("com.kakao.talk") || packageName.contains("com.kakao.story")) { ComponentName name = new ComponentName(packageName, resolveInfo.activityInfo.name); targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, url); targetedShareIntent.setComponent(name); targetedShareIntent.setPackage(packageName); targetedShareIntents.add(targetedShareIntent); } } if (targetedShareIntents.isEmpty()) { Log.i("###", "공유할 수 있는 앱 없음"); return; } Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "공유하기"); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[targetedShareIntents.size()])); startActivity(chooserIntent);