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

Share 기능을 넣으려고하는데 특정앱만 나오게끔 가능한가요?

0 추천
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, filename);
sendIntent.putExtra(Intent.EXTRA_TEXT, content);
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "" });
sendIntent.setType("text/plain");
startActivity(sendIntent);
 
위에처럼 하면 해당되는 앱들 전부다 나오는데 나오는것들중에 몇개는 빼고싶거든요...
혹시 가능하면 방법 좀 알려주세요~~
아직도초보 (3,030 포인트) 님이 2013년 11월 11일 질문

2개의 답변

0 추천
 
채택된 답변
특정앱만 나오게는 불가능한걸로 알고 있고요

굳이 그런 형태를 원하시면 커스텀으로 구현하셔야 될겁니다.
mono1 (3,100 포인트) 님이 2013년 11월 12일 답변
아직도초보님이 2013년 11월 12일 채택됨
그렇군요...댓글 감사합니다^^
+1 추천
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("###", "|" + "공유할 수 있는 앱 없음");
}
else {
  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("###", "|" + "공유할 수 있는 앱 없음");
  }
  else {
    Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "공유하기");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[targetedShareIntents.size()]));
    startActivity(chooserIntent);
  }
}

 

 

쎄미 (162,410 포인트) 님이 2016년 9월 19일 답변
쎄미님이 2016년 9월 19일 수정
...