【问题标题】:onSuccess method not calling in firebase in androidonSuccess 方法未在 android 中调用 firebase
【发布时间】:2018-06-02 06:41:14
【问题描述】:

我正在尝试创建一个动态链接,当我尝试调试代码时,它正在调用回调方法 addOnSuccessListener 但之后它没有调用,或者我们说它正在跳过方法 onSuccess() 我不知道为什么它正在发生。

private void firebaseInvite() {
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        String uid = user.getUid();
        String url = "https://larky.funswitch.io/?invitedby=" + uid;
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(url))
                .setDynamicLinkDomain("https://fmu3k.app.goo.gl")
                .setAndroidParameters(
                        new DynamicLink.AndroidParameters.Builder("io.funswitch.funrooster")
                                .setMinimumVersion(5)
                                .build())
                .buildShortDynamicLink()
                .addOnSuccessListener(shortDynamicLink -> {

在这之后我的调试器跳过了这段代码,它没有调用

 mInvitationUrl = shortDynamicLink.getShortLink();
                    mDatabase.child("Name").addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            String referrerName = dataSnapshot.getValue(String.class);
                            String subject = String.format("%s wants you to play MyExampleGame!", referrerName);
                            String invitationLink = mInvitationUrl.toString();
                            String msg = "Let's play MyExampleGame together! Use my referrer link: "
                                    + invitationLink;
                            String msgHtml = String.format("<p>Let's play MyExampleGame together! Use my "
                                    + "<a href=\"%s\">referrer link</a>!</p>", invitationLink);

                            Intent intent = new Intent(Intent.ACTION_SENDTO);
                            intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                            intent.putExtra(Intent.EXTRA_TEXT, msg);
                            intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
                            if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                                startActivity(intent);
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                });
    }

请帮帮我..

【问题讨论】:

  • 尝试将您的 addOnSuccessListener(shortDynamicLink -&gt; { 更改为 toaddOnSuccessListener{shortDynamicLink -&gt; 也您的 addOnSuccessListener 需要执行程序类,这就是为什么我认为它会跳过它所以将其更改为 addOnSuccessListener(this,...
  • 非常感谢您的回答,但我在片段中这样做,我将 getActivity() 作为执行程序类,但仍然出现同样的问题,并且没有任何从 toaddOnSuccessListener{shortDynamicLink -> 开始的方法.
  • 你不是用 lambda 表达式传递你的方法吗?!我也没有看到你在 firebase 文档 Task&lt;ShortDynamicLink&gt; shortLinkTask 然后 .addOnCompleteListener(this, new OnCompleteListener&lt;ShortDynamicLink&gt;() { 中创建任何任务
  • 是的,我只使用 lambda 表达式传递它。我需要帮助link
  • 但这是针对短链接的,这是另一种创建短链接的方法,但我正在遵循这种方法,所以它应该可以工作。但我不知道为什么它不调用 onSuccess()

标签: android firebase-dynamic-links firebase-invites


【解决方案1】:

我得到它解决了这是一个非常基本的愚蠢错误我正在做的实际上链接没有在上面的代码中解析因为我在动态链接和动态链接域中提到了两次 https 在从动态链接域中删除 https 后我得到它的工作.

private void firebaseInvite() {
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        String uid = user.getUid();
        String url = "https://larky.funswitch.io/?invitedby=" + uid;
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(url))
                .setDynamicLinkDomain("fmu3k.app.goo.gl")
                .setAndroidParameters(
                        new DynamicLink.AndroidParameters.Builder("io.funswitch.funrooster")
                                .setMinimumVersion(5)
                                .build())
                .buildShortDynamicLink()
                .addOnSuccessListener(shortDynamicLink -> {

 mInvitationUrl = shortDynamicLink.getShortLink();
                    mDatabase.child("Name").addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            String referrerName = dataSnapshot.getValue(String.class);
                            String subject = String.format("%s wants you to play MyExampleGame!", referrerName);
                            String invitationLink = mInvitationUrl.toString();
                            String msg = "Let's play MyExampleGame together! Use my referrer link: "
                                    + invitationLink;
                            String msgHtml = String.format("<p>Let's play MyExampleGame together! Use my "
                                    + "<a href=\"%s\">referrer link</a>!</p>", invitationLink);

                            Intent intent = new Intent(Intent.ACTION_SENDTO);
                            intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                            intent.putExtra(Intent.EXTRA_TEXT, msg);
                            intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
                            if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                                startActivity(intent);
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                });
    }

【讨论】:

猜你喜欢
  • 2019-11-08
  • 1970-01-01
  • 2018-05-24
  • 2022-07-25
  • 2012-07-26
  • 2020-01-26
  • 2015-10-22
  • 2018-10-23
  • 2020-03-02
相关资源
最近更新 更多