我创建了一个分享到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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)