好吧,总是有选择。在这种特殊情况下(使用有关 URL 查询参数的给定条件),我建议为您要与之共享内容的每个平台创建单独的共享方法,而不是使用 Android 默认共享方法。
例如,这里是 Facebook 等的自定义共享。但是该方法非常耗时。
但是有一个更好的选择来处理这种情况。这是一种获取有关选择了哪个应用程序的信息的相对较新的方法。这很容易。基本上你需要:
PendingIntent
为 a创建一个并像这样BroadcastReceiver
提供它:IntentSender
Intent.createChooser()
Intent share = new Intent(ACTION_SEND);
...
PendingIntent pi = PendingIntent.getBroadcast(myContext, requestCode,
new Intent(myContext, MyBroadcastReceiver.class),
FLAG_UPDATE_CURRENT);
share = Intent.createChooser(share, null, pi.getIntentSender());
- 接收回调
MyBroadcastReceiver
并查看Intent.EXTRA_CHOSEN_COMPONENT
如下:
@Override public void onReceive(Context context, Intent intent) {
...
ComponentName clickedComponent = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT);
}
更多信息在这里
尽管您无法更改每个特定案例的 URL,因为共享事件已经发生,但您可以实现单独的 API 调用或 URL 链接,使用它们可以收集分析数据,更改您发送的 URL 点击的结果(如果您控制后端,当然)或者只是向您的应用程序的用户显示一条自定义消息。
请记住,对于此方法的某些用例,您共享的 URL 对于每个用户应该是唯一的(例如,更改 URL 单击的结果等)。
希望能帮助到你。