2014-10-29 3 views
1

Android 앱에서 공유 옵션을 제한 할 수있는 방법이 있습니까? ShareActionProvider을 사용하거나 Intent.ACTION_SEND 인 텐트 옵션을 사용하여 간단히 인 텐트를 시작하려고했습니다. 기본적으로 나는 전자 메일 만 또는 일종의 것을 통해 공유를 제한 할 수 있기를 원합니다.공유 옵션 제한

답변

1

당신이

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
shareIntent.setType("text/plain"); 
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,"this is a string"); 
shareIntent.setType("image/png"); 
shareIntent.putExtra(android.content.Intent.EXTRA_STREAM,uri); //Share the image on Facebook 
PackageManager pm = getApplicationContext().getPackageManager(); 
List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); 
        for (final ResolveInfo app : activityList) { 
         if ((app.activityInfo.name).contains("facebook")) { 
          final ActivityInfo activity = app.activityInfo; 
          final ComponentName name = new ComponentName(
             activity.applicationInfo.packageName, 
             activity.name); 
          shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
          shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
           | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
          shareIntent.setComponent(name); 
          startActivity(shareIntent); 
          break; 
           } 
          } 
+0

정말 고마워요 다른 이름 : – AmaJayJB

+0

환영 찾는 대신 페이스 북의이 같은 것을 사용할 수 있습니다 : – JRowan

1

당신은 다음과 같이 당신의 필요에 따라 의도 선택기를 사용자 정의 할 수 있습니다 -이 당신을 도와줍니다

List<Intent> targetedShareIntents = new ArrayList<Intent>(); 
     Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(shareIntent, 0); 
     if (!resInfo.isEmpty()){ 
      for (ResolveInfo resolveInfo : resInfo) { 
       String packageName = resolveInfo.activityInfo.packageName; 
       Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND); 
       targetedShareIntent.setType("text/plain"); 
       targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject to be shared"); 
       if (StringUtils.equals(packageName, "com.facebook.katana")){ 
        targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://link-to-be-shared.com"); 
       }else{ 
        targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text message to shared"); 
       } 

       targetedShareIntent.setPackage(packageName); 
       targetedShareIntents.add(targetedShareIntent); 


      } 
      Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share"); 

      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{})); 

      startActivity(chooserIntent); 
     } 

희망을.

+0

정말 감사합니다 :) – AmaJayJB