成功分享android的意图

时间:2012-01-09 19:13:51

标签: android android-intent

如何判断用户是否成功完成了共享意图?例如,如果用户想通过Facebook或Twitter分享应用程序。

编辑:

我不是在考虑如何创建Intent进行分享。我想知道用户是否真的分享了什么。或者用户点击了取消按钮。

4 个答案:

答案 0 :(得分:20)

我认为没有一种可靠的方法可以做到。

您可以使用startActivityForResult()发起发送,并希望处理Intent的活动回复RESULT_OK。但你不能总是依赖它来工作。

答案 1 :(得分:2)

对于推特 - "数据"当用户取消共享时,OnActivityResult中的对象为null。

答案 2 :(得分:1)

找到了适用于Android> = 22的选项。也许它可以对某人有所帮助。

从Android 22开始,可以选择以IntentSender方法发送createChooser对象。您可以为广播接收器创建挂起的意图,在其中可以获取用户单击的应用程序的程序包名称。

接收器:

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))

来源:medium blogpost

答案 3 :(得分:-6)

您已使用Intent.ACTION_SEND,系统将显示您可以共享的应用程序列表(在设备上)。本网站解释了如何:

http://sudarmuthu.com/blog/sharing-content-in-android-using-action_send-intent