java Firebase动态链接以打开包含数据的特定活动
我在应用程序中实现Firebase动态链接时遇到一些问题
我的应用程序包含一个图书库,每本书下都有一个共享按钮。当用户单击该按钮时,它会创建一条消息,他可以向其他用户发送这样的消息:“嘿,你可能喜欢这本书,请在这里查看!”
一旦用户点击图像,我希望它在那个活动(称为BookDetailActivity)中打开应用程序。如果用户有该应用程序,我希望它打开BookDetailActivity,其中包含与该书相关的特定意图数据(比如bookid=abcde),如果用户没有该应用程序,则发送他下载该应用程序
为此,我在清单中BookDetailActivity下添加了以下代码:
<activity 安卓:name=".BookDetailActivity">
<intent-filter 安卓:label="SB">
<action 安卓:name="安卓.intent.action.VIEW" />
<category 安卓:name="安卓.intent.category.DEFAULT" />
<category 安卓:name="安卓.intent.category.BROWSABLE" />
<data
安卓:host="https://x.y.link"
安卓:pathPrefix="/SB"
安卓:scheme="https" />
</intent-filter>
</activity>
然后,在BookDetailActivity中,我添加了以下内容(仅用于检查应用程序是否在该活动中打开,以及查看我获得的链接)
FirebaseDynamicLinks.getInstance()
.getDynamicLink( getIntent() )
.addOnSuccessListener( this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
Log.d( "TEST1", deepLink + "" );
}
}
} )
.addOnFailureListener( this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d( "TEST2", "HERE" );
}
} );
现在,发送邀请消息的按钮是:
ib_Share.setOnClickListener( v -> {
Intent shareIntent = new Intent();
shareIntent.setAction( Intent.ACTION_SEND );
String suggest = "Hey you might like this book, check it here! - https://x.y.link/SB?bookid=abcde";
shareIntent.putExtra( Intent.EXTRA_TEXT, Html.fromHtml( suggest ) );
shareIntent.setType( "text/html" );
startActivity( shareIntent );
} );
我得到的是,我成功地将消息发送给另一个用户,用户单击该链接,应用程序将在主活动而不是BookDetail活动中打开
有没有理由不让用户参加正确的活动
它在我的Firebase控制台中的外观是(域(x.y.link只是一个示例):
另外,如果以前版本的my app在其BookDetailActivity代码中没有FirebaseDynamicLinks
部分,那么用户将如何获得这些邀请?它会打开他们下载应用程序,还是什么都不做
多谢各位
# 1 楼答案
我猜,每当点击动态链接时,它都会打开你的
MainActivity
。我试图得出如下的解决方案在
MainActivity
中,使用onNewIntent()
方法检查是否由于动态链接而创建了任何新的意图希望上面的代码片段对您有所帮助!:)