如何判断用户是否成功完成了分享意图?例如,如果用户想通过Facebook或Twitter分享应用程序。
编辑:
我不是在研究如何创建共享Intent
。我想知道用户是否实际上分享了任何东西。还是用户按了取消按钮。
如何判断用户是否成功完成了分享意图?例如,如果用户想通过Facebook或Twitter分享应用程序。
编辑:
我不是在研究如何创建共享Intent
。我想知道用户是否实际上分享了任何东西。还是用户按了取消按钮。
我认为没有一种保证可行的方法。
您可以使用startActivityForResult()
来启动发送操作,并希望处理Intent的活动会使用RESULT_OK
回复。但是您不能总是依赖它能够正常工作。
找到了适用于Android >= 22的选项,希望能对某些人有所帮助。
从Android 22开始,createChooser
方法中有一个选项可以发送IntentSender
对象。您可以为广播接收器创建一个挂起的意图,在其中可以获取用户单击的应用程序的包名称。
接收器:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// do something here
}
}
清单:
<receiver android:name="MyReceiver" android:exported="false"/>
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
然后在选择器意图中使用它:
startActivity(Intent.createChooser(share
, "some_title"
, pendingIntent.getIntentSender()));
然后在onReceiver
中,您可以获取应用程序的包名:
String selectedAppPackage = String.valueOf(intent.getExtras().get(EXTRA_CHOSEN_COMPONENT))
Source: medium blogpost
当用户取消分享时,在OnActivityResult中的Twitter"数据"对象为空。
您可以使用 Intent.ACTION_SEND
,系统将显示设备上可共享的应用程序列表。这个网站解释了如何实现:
http://sudarmuthu.com/blog/sharing-content-in-android-using-action_send-intent