gpt4 book ai didi

android - 根据他们选择分享的方法分支 Android Share Intent extras

转载 作者:可可西里 更新时间:2023-11-01 19:01:39 28 4
gpt4 key购买 nike

只是想分享一个动态文本字符串 + 应用程序的 URL。 native Android 共享 Intent 设置正确,并且与 Twitter、Gmail 等完美配合。但是,正如许多人猜测的那样,它不适用于 Facebook。显然是因为 Facebook 不接受 intent.EXTRA_TEXT 字段中的文本,只接受一个 URL。

好吧,我想问大家的问题是:有没有一种方法可以根据他们选择的分享方式来划分分享 Intent 附加功能?例如,如果他们通过 gmail 或 Twitter 分享,则使用现有的 String + URL(所需选项)EXTRA_TEXT,但如果他们选择通过 Facebook 分享,则仅使用URL 作为 EXTRA_TEXT

并不是真的想为 Android 原生内置的如此简单的任务实现 Facebook Android SDK。

感谢您的宝贵时间和建议。

尝试过类似的方法,但显然失败了,因为它只检查共享选项是否存在(当共享弹出时,而不是在他们单击共享方法之后),当他们选择一种方法时它没有响应。

  String shareBody = "app string text " + act_txt + " more text! Get the app at http://www.appurl.com";

PackageManager pm = view.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0);
for(final ResolveInfo app : activityList) {
Log.i(TAG, "app.actinfo.name: " + app.activityInfo.name);
//if((app.activityInfo.name).contains("facebook")) {
if("com.facebook.katana.ShareLinkActivity".equals(app.activityInfo.name)) {


sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://www.appurl.com");
startActivity(Intent.createChooser(sharingIntent, "Share idea"));
break;
} else {
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app name");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share"));
break;
}
}

最佳答案

找到了一个解决方案,在这个 SO 问题上要求其他东西:https://stackoverflow.com/a/8550043/1938669

尝试在此处发布我的原始问题已接近尾声。在可能的 shareIntent 列表循环中,您需要创建一个针对特定共享选择(如 facebook 或 twitter)的新共享 Intent

这是一个最终的工作解决方案,如果选择了 facebook,它只共享一个 URL,否则共享完整的文本字符串 + url:

public void shareIt(View view){
//sharing implementation
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = "string of text " + txt_var + " more text! Get the app at http://someapp.com";

PackageManager pm = view.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0);
for(final ResolveInfo app : activityList) {

String packageName = app.activityInfo.packageName;
Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
targetedShareIntent.setType("text/plain");
targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "share");
if(TextUtils.equals(packageName, "com.facebook.katana")){
targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://someurl.com");
} else {
targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
}

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

}

Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share Idea");

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

}

关于android - 根据他们选择分享的方法分支 Android Share Intent extras,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450867/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com