BeL*_*bda 5 android android-intent android-intent-chooser
我的应用程序共享一个特定的 URL 以在其他应用程序中打开,但我想根据用户与之共享的应用程序使用自定义 URL。例如,我想用 Gmail ,我想myurl.com?src=gmail用 FBmyurl.com?src=fb等等。
这通常适用于这个著名的方法:https : //stackoverflow.com/a/18068122/3015986。但是,在 Android 10 中,该解决方案不再有效:https : //medium.com/@AndroidDeveloperLB/this-wont-work-anymore-on-android-q-1702c19eb7bb
那么,还有哪些其他选择呢?
好吧,总有选择。在这种特殊情况下(在给定的有关 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());
Run Code Online (Sandbox Code Playgroud)
MyBroadcastReceiver并查看Intent.EXTRA_CHOSEN_COMPONENT如下:@Override public void onReceive(Context context, Intent intent) {
...
ComponentName clickedComponent = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT);
}
Run Code Online (Sandbox Code Playgroud)
更多信息请点击此处
虽然您无法更改每种特定情况的 URL,因为共享事件已经发生,但您可以实施单独的 API 调用或 URL 链接,使用它们可以收集分析数据,更改您发送的 URL 点击的结果(如果您控制后端) ,当然)或者只是向应用程序的用户显示自定义消息。
请记住,对于此方法的某些用例,您共享的 URL 对于每个用户应该是唯一的(例如,更改 URL 单击的结果等)。
希望能帮助到你。