Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带参数的Firebase动态链接_Java_Android_Firebase_Firebase Dynamic Links - Fatal编程技术网

Java 带参数的Firebase动态链接

Java 带参数的Firebase动态链接,java,android,firebase,firebase-dynamic-links,Java,Android,Firebase,Firebase Dynamic Links,我是这个社区的新成员,我之所以加入,是因为我需要强调一个我无法解决的问题。 提前感谢您给我的任何答复,以帮助我 我目前正在android studio中开发一个项目,并将其用作firebase数据库,我需要共享应用程序中的产品、帖子或列表。因此,我决定使用Firebase动态链接来共享某些特定对象 我当前的代码试图创建链接并共享它,我想知道我做错了什么,因为它创建了链接并允许我共享它,但它没有得到我传递的参数。在我的例子中,“Lid”是我想要通过链接的参数,当点击链接时,只需取存储“Lid”的部

我是这个社区的新成员,我之所以加入,是因为我需要强调一个我无法解决的问题。 提前感谢您给我的任何答复,以帮助我

我目前正在android studio中开发一个项目,并将其用作firebase数据库,我需要共享应用程序中的产品、帖子或列表。因此,我决定使用Firebase动态链接来共享某些特定对象

我当前的代码试图创建链接并共享它,我想知道我做错了什么,因为它创建了链接并允许我共享它,但它没有得到我传递的参数。在我的例子中,“Lid”是我想要通过链接的参数,当点击链接时,只需取存储“Lid”的部分

 holder.BtnShare.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            generateDeepLinkUrl(postCurrent.getLid());

           String url="https://palsuper.page.link/lista_compartida";
            FirebaseDynamicLinks.getInstance().createDynamicLink()
                    .setLink( Uri.parse(url))
                    .setDomainUriPrefix("https://palsuper.page.link")
                    .setAndroidParameters(
                            new DynamicLink.AndroidParameters.Builder("com.ibrahim.palsuper")
                                    .setMinimumVersion(1)
                                    .build())
                    .buildShortDynamicLink( ShortDynamicLink.Suffix.SHORT).addOnCompleteListener( new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {

                    if (task.isSuccessful()) {
                        Uri shortURL = task.getResult().getShortLink();
                        shareDeepLink(shortURL.toString());
                    } else {
                        Toast.makeText(mContext, "error", Toast.LENGTH_SHORT).show();
                    }
                }
            });

            shareDeepLink( url );
        }
    } );


}

private String generateDeepLinkUrl(String Lid) {
    return "https://palsuper.com/lista_compartida=" + Lid ;
}

private void shareDeepLink(String url) {

    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "Hey! check this content out  " + url);
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check this out !");
    mContext.startActivity(Intent.createChooser(shareIntent, "Share this cool content"));

}
holder.BtnShare.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
generatedeplinkurl(postCurrent.getLid());
字符串url=”https://palsuper.page.link/lista_compartida";
FireBaseDynamicClinks.getInstance().CreateDynamicClink()
.setLink(Uri.parse(url))
.setDomainUriPrefix(“https://palsuper.page.link")
.setAndroidParameters(
新建DynamicLink.AndroidParameters.Builder(“com.ibrahim.palsuper”)
.setMinimumVersion(1)
.build())
.buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri shortURL=task.getResult().getShortLink();
shareDeepLink(shortURL.toString());
}否则{
Toast.makeText(mContext,“error”,Toast.LENGTH_SHORT).show();
}
}
});
共享深度链接(url);
}
} );
}
私有字符串generatedeplinkurl(字符串Lid){
返回“https://palsuper.com/lista_compartida=“+盖子;
}
私有void sharedeplink(字符串url){
意向共享意向=新意向(意向.行动\发送);
shareIntent.setType(“文本/普通”);
putExtra(Intent.EXTRA_文本,“嘿!检查此内容”+url);
putExtra(Intent.EXTRA_主题,“检查这个!”);
mContext.startActivity(Intent.createChooser(shareIntent,“共享此酷内容”);
}
获取链接

private void getDynamicLink() {
    FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    // Get deep link from result (may be null if no link is found)
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                        Toast.makeText(HomeActivity.this, "Link obtenido del intent " + deepLink, Toast.LENGTH_SHORT).show();

                       // Log.d(TAG, "Link obtenido del intent " + deepLink.getPath());

                        getAndParseSharedData(deepLink.getPath());


                    }


                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                   // Log.w(TAG, "getDynamicLink:onFailure", e);
                }
            });
}

private void getAndParseSharedData(String url) {

    String pushKey = "";
    if (url.contains("_")) {
        String[] parts = url.split("=");
        pushKey = parts[1];
       // Log.d(TAG, "getAndParseSharedData: " + pushKey);
        Toast.makeText(HomeActivity.this, pushKey, Toast.LENGTH_SHORT).show();
    }

    }
private void getDynamicLink(){
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(此,新的OnSuccessListener(){
@凌驾
成功时的公共无效(PendingDynamicLinkData PendingDynamicLinkData){
//从结果获取深度链接(如果未找到链接,则可能为空)
urideeplink=null;
如果(PendingDynamicClinkData!=null){
deepLink=pendingDynamicLinkData.getLink();
Toast.makeText(HomeActivity.this,“Link obtenido del intent”+deepLink,Toast.LENGTH_SHORT.show();
//Log.d(标记“Link obtenido del intent”+deepLink.getPath());
getAndParseSharedData(deepLink.getPath());
}
}
})
.addOnFailureListener(此,新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//Log.w(标签“getDynamicLink:onFailure”,e);
}
});
}
私有void getAndParseSharedData(字符串url){
字符串pushKey=“”;
if(url.contains(“”)){
String[]parts=url.split(“”);
按键=零件[1];
//Log.d(标记“getAndParseSharedData:”+pushKey);
Toast.makeText(HomeActivity.this,按键,Toast.LENGTH_SHORT).show();
}
}

}

Joe您需要将要获取的参数作为查询参数传递

Like this:
"https://palsuper.com?lista_compartida=" + Lid;
                        or
"https://palsuper.com/lista_compartida?lista_compartida=" + Lid;

And then you can fetch it simply using this firebase provided method:

Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                        String lista_compartida = deepLink.getQueryParameter("lista_compartida");
}


希望这个答案有帮助。

转到firbase console动态链接部分,然后创建一个动态链接,如 然后使用下面的代码生成并共享动态链接

 fun generateContentLink(): Uri? {
    val baseUrl = Uri.parse(BASE_URL)
    val domain = "https://xyz.page.link"
    val link = FirebaseDynamicLinks.getInstance()
        .createDynamicLink()
        .setLink(baseUrl)
        .setDomainUriPrefix(domain)
        .setAndroidParameters(AndroidParameters.Builder("com.xyz").build())
        .buildDynamicLink()
    return link.uri
}

private fun onShareClicked() {
    try {
        val link = generateContentLink()
        Log.e("DynamicLnk", "onShareClicked: " + link.toString())
        val subject = " Welcome to QuickPe"
        val msg =
            "Hi,\nInviting you to join xyz\n an interesting app which provides you\n" +
                    "incredible offers on Recharge, Shopping & many more.\n\n" +
                    "Use my referrer code :\n\n " + session()?.getInviteCode().toString() +
                    "\n\nDownload app from link : \n"
        val intent = Intent(Intent.ACTION_SEND)
        intent.type = "text/plain"
        intent.putExtra(Intent.EXTRA_SUBJECT, subject)
        intent.putExtra(Intent.EXTRA_TEXT,
            msg + "\n" + link + "/" + session()?.getInviteCode().toString())
        if (intent.resolveActivity(packageManager) != null) {
            startActivity(intent)
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
}
现在接收代码,如下AndroidManifest.xml中的代码

 <activity android:name=".xyzActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data
                android:host="https://xyz.page.link"
                android:scheme="https"/>
        </intent-filter>
    </activity>

按照您所说的方式尝试,并根据您所说的内容以不同的方式尝试,但是在所有获得链接的结果中都是“null”,您是否有一个完整的示例来说明它是如何工作的?
 FirebaseDynamicLinks.getInstance()
        .getDynamicLink(intent)
        .addOnSuccessListener(this
        ) { pendingDynamicLinkData ->
            // Get deep link from result (may be null if no link is found)
            var deepLink: Uri? = null
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.link
            }
            if (deepLink != null) { //Intent.ACTION_VIEW.equals(appLinkAction) &&
                val code = deepLink.lastPathSegment
                edtReferralCode.setText(code)
            }

            // Handle the deep link. For example, open the linked
            // content, or apply promotional credit to the user's
            // account.
            // ...

            // ...
        }
        .addOnFailureListener(this
        ) { e -> Log.w("=================>", "getDynamicLink:onFailure", e) }