facebook / facebook-android-sdk

Used to integrate Android apps with Facebook Platform.
https://developers.facebook.com/docs/android
Other
6.07k stars 3.64k forks source link

Different performance when share the same link by web or native handler. #1232

Open lsvery666 opened 3 months ago

lsvery666 commented 3 months ago

Checklist before submitting a bug report

Java version

11

Android version

Android 12

Android SDK version

15.2.0

Installation platform & version

Gradle 6.7.1

Package

Share

Goals

I just share the same link using Facebook Android SDK in different way. While Facebook is installed, SDK will use native handler to share the link. While Facebook is uninstalled, SDK will use web handler to share the link. But I get different performance when I click the links in Facebook app. For the native share link, it opens the corresponding url in a web view activity for me. After I click the bottom button, it opens CapCut app for me. While for the web share link, it directly opens the CapCut app.

https://github.com/facebook/facebook-android-sdk/assets/68722877/d0953004-4626-43ab-9579-f1d8a38e82a2

Expected results

How could this happen? What can I do if I want to get the same performance as the native share link?

Actual results

I get different performance when I click the links in Facebook app. For the native share link, it opens this link in a web view activity for me. While for the web share link, it directly opens the CapCut app.

Steps to reproduce

No response

Code samples & details

// INSERT YOUR CODE HERE
val content = ShareLinkContent.Builder()
    .setContentUrl(Uri.parse(url))
    .setShareHashtag(ShareHashtag.Builder().setHashtag(text).build())
    .build()
val callbackManager = CallbackManager.Factory.create()
val callback = object : FacebookCallback<Sharer.Result> {
    override fun onSuccess(result: Sharer.Result) {
    }

    override fun onCancel() {
    }

    override fun onError(error: FacebookException) {
    }
}
val shareDialog = ShareDialog(activity)
shareDialog.registerCallback(callbackManager, callback)
if (shareDialog.canShow(content)) {
    shareDialog.show(content)
}