【问题标题】:Restricting share options限制股票期权
【发布时间】:2014-10-29 08:14:56
【问题描述】:

有没有办法限制 Android 应用中的共享选项?我尝试过使用ShareActionProvider 或者只是使用Intent.ACTION_SEND 意图选项启动一个意图。基本上我希望能够限制仅通过电子邮件或类似的方式共享。

【问题讨论】:

    标签: java 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;
                                    }
                                }
    

    【讨论】:

      【解决方案2】:

      您可以像这样根据需要自定义意图选择器 -

      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);
              }
      

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多