java–Android– 如何检测用户是否选择使用意图分享到Facebook或Twitter?

java–Android– 如何检测用户是否选择使用意图分享到Facebook或Twitter?,第1张

概述我创建了一个分享到facebook,twitter等的应用程序.但是我想根据用户共享的对象执行不同的功能,例如,如果用户共享到Facebook做一件事但是如果用户共享到twitter那么另一个.我该怎么做呢?我的代码到目前为止如下:privatevoidShareSub(){Intenti=newIntent(Intent.ACTI

我创建了一个分享到facebook,twitter等的应用程序.但是我想根据用户共享的对象执行不同的功能,例如,如果用户共享到Facebook做一件事但是如果用户共享到twitter那么另一个.

我该怎么做呢?

我的代码到目前为止如下:

private voID ShareSub() {    Intent i = new Intent(Intent.ACTION_SEND);    i.setType("text/plain");    i.putExtra(            Intent.EXTRA_TEXT,            "You've just shared "                    + "Awesome");    startActivity(i);}

以上代码的进一步说明:

当用户按下 *** 作栏中的“menu_item_share”按钮时,触发上述功能.然后,该功能使得出现如下图所示的框,这允许用户选择特定选项,例如, Facebook或Twitter.然后将Intent.EXTRA_TEXT共享给该特定应用程序.

我想要的是,当用户点击例如Facebook时,调用特定的功能,例如通过他们(Facebook的)API等分享

我没有像下面这样使用ShareActionProvIDer:

   <item        androID:ID="@+ID/your_share_item"        androID:actionProvIDerClass="androID.Widget.ShareActionProvIDer"        androID:showAsAction="ifRoom"        androID:title="@string/share"/>

相反,我创建了一个调用ShareSub函数的简单按钮:

<item    androID:ID="@+ID/menu_item_share"    androID:icon="@androID:drawable/ic_menu_share"    androID:showAsAction="ifRoom"    androID:title="Share"/>

我选择这样做的原因是,我不希望最近共享的按钮出现,如下图所示.当我尝试使用下面建议的代码时,这会导致我出现问题,因为我没有使用过ShareActionProvIDer.

解决方法:

您无法直接找到所选的应用程序,但您可以显示自己的“选配器”对话框.

而不是调用startActivity(i),获取所有活动(facebook,twitter等)的列表,这些活动已注册为使用queryIntentActivities()处理您的意图.

List<ResolveInfo> activitIEs = getPackageManager().queryIntentActivitIEs (i, 0);

每个ResolveInfo都是一个可以处理您的意图的应用程序.现在,您可以显示包含标签或图标列表的AlertDialog.当用户从列表中选择标签时,您可以在对话框的单击处理程序中处理特定于应用程序的 *** 作.

编辑:这是一个完整的工作示例

private voID ShareSub() {    final Intent i = new Intent(Intent.ACTION_SEND);    i.setType("text/plain");    i.putExtra(Intent.EXTRA_TEXT,"text");    final List<ResolveInfo> activitIEs = getPackageManager().queryIntentActivitIEs (i, 0);    List<String> appnames = new ArrayList<String>();    for (ResolveInfo info : activitIEs) {        appnames.add(info.loadLabel(getPackageManager()).toString());    }    AlertDialog.Builder builder = new AlertDialog.Builder(this);    builder.setTitle("Complete Action using...");    builder.setItems(appnames.toArray(new CharSequence[appnames.size()]), new DialogInterface.OnClickListener() {        public voID onClick(DialogInterface dialog, int item) {            ResolveInfo info = activitIEs.get(item);            if (info.activityInfo.packagename.equals("com.facebook.katana")) {                // Facebook was chosen            } else if (info.activityInfo.packagename.equals("com.twitter.androID")) {                // Twitter was chosen            }            // start the selected activity            i.setPackage(info.activityInfo.packagename);            startActivity(i);        }    });    AlertDialog alert = builder.create();    alert.show();}
总结

以上是内存溢出为你收集整理的java – Android – 如何检测用户是否选择使用意图分享到Facebook或Twitter?全部内容,希望文章能够帮你解决java – Android – 如何检测用户是否选择使用意图分享到Facebook或Twitter?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1098080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存