【问题标题】:Need to share text via applications需要通过应用程序共享文本
【发布时间】:2014-11-13 10:39:55
【问题描述】:

我需要通过其他社交应用程序分享我的应用程序中的文本。我有一段运行良好的代码,但它在对话框中显示应用程序列表:

我希望以这种方式获得相同的功能。可能我需要根据设备中安装的应用程序动态创建视图。

请建议我如何实现这一目标

【问题讨论】:

  • 您想与特定应用程序共享您的文本吗?
  • @PiyushGupta 不,我想与设备中安装的每个应用程序共享。
  • 这样你就可以轻松使用Intent.ACTION_SEND
  • @PiyushGupta 我知道,但它正在警告框中打开应用程序列表,我想在列表视图中显示。
  • 它不应该是警告框。它可能是上下文菜单。如果您需要第二个,请定制。

标签: android android-layout android-intent android-dialog


【解决方案1】:

此代码可让您找到可用于指定意图的所有应用:

public static ArrayList<Availables> getAvailableAppsForIntent(Intent intent, Context context) {
    ArrayList<Availables> availables = new ArrayList<Availables>();

    PackageManager manager = context.getPackageManager();
    List<ResolveInfo> infos = manager.queryIntentActivities(intent, PackageManager.GET_RESOLVED_FILTER);

    for(ResolveInfo info : infos) {
        ActivityInfo activityInfo = info.activityInfo;
        IntentFilter filter = info.filter;
        if (filter != null && filter.hasAction(intent.getAction())) {

            // This activity resolves my Intent with the filter I'm looking for
            String activityPackageName = activityInfo.packageName;
            String activityName = activityInfo.loadLabel(manager).toString();
            String activityFullName = activityInfo.name;
            Drawable icon = activityInfo.loadIcon(manager);
            Availables available = new Availables(activityName, activityFullName, activityPackageName, icon);
            available.setForIntent(intent);
            availables.add(available);
        }
    }

    return availables;
}

Availables 只是我创建的一个类,用于存储有关应用程序的所有信息,但您可以随意管理它。 那么你可以这样启动应用程序:

    Intent intent = available.getForIntent();
    intent.setPackage(available.getAppPackage());
    context.startActivity(intent);

希望对你有帮助!

【讨论】:

  • 会更好。你可以随心所欲。
  • 非常感谢。希望它会有所帮助:)
  • 嗨,我正在传递 sendIntent = new Intent(android.content.Intent.ACTION_SEND);在意图参数中,它不返回单个应用程序。
  • 当然,因为有更多的应用程序可以解决相同的意图。该方法返回应用程序列表而不是单个应用程序。
【解决方案2】:

野兔是按钮点击事件使用它

Intent intent = new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("text/plain");
String shareBody = "Here is the share content body";
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
intent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(intent, "Share via"));

【讨论】:

  • 我使用了相同的代码,但它在警告框中打开了列表,我不想这样做。
  • 我已经分享了我必须创建的 UI。
【解决方案3】:

点击任意View写代码:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject Here");
intent.putExtra(Intent.EXTRA_TEXT, "Your Message Here...");
return intent;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多