2014-10-29 5 views
1

Есть ли способ ограничить параметры совместного доступа в приложении для Android? Я пробовал использовать ShareActionProvider или просто начинаю намерение, используя опцию назначения Intent.ACTION_SEND. В основном я хочу, чтобы иметь возможность ограничивать совместный доступ только по электронной почте или что-то в этом роде.Ограничение опционов на акции

ответ

1

вы можете использовать что-то вроде этого, но вместо Facebook искать другое имя

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

Вы можете настроить пристальный Chooser в соответствии с вашими потребностями, как это -

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

Смежные вопросы