2014-10-29 82 views
1

有没有办法限制Android应用程序中的共享选项?我尝试过使用ShareActionProvider或者只是简单地使用意向选项启动意图。基本上我希望能够通过电子邮件限制分享或类似的东西。限制共享选项

回答

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 2014-10-29 09:27:38

+0

你的欢迎:) – JRowan 2014-10-29 09:28:35

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 2014-10-29 09:27:00