Java 如何通过深度链接传递数据?

Java 如何通过深度链接传递数据?,java,android,facebook,deep-linking,Java,Android,Facebook,Deep Linking,我在我的应用程序中有一个提供列表,每个列表项上都有一个共享按钮。当任何用户单击共享链接时,我使用深度链接打开我的应用程序的提供详细信息活动。当有人单击链接时,我的详细信息页面活动被触发,但我如何知道,当有人点击共享的深度链接时,提供详细的活动显示。假设您为每个项目生成单独的共享链接。您可以将一些参数与深度链接URL一起发送,然后在应用程序中接收它们。任何一种身份证都足够了。 (来源:) 举个例子,如果应用程序在此处进行深度链接,您可以在相应的活动(此处:com.example.android

我在我的应用程序中有一个提供列表,每个列表项上都有一个共享按钮。当任何用户单击共享链接时,我使用深度链接打开我的应用程序的提供详细信息活动。当有人单击链接时,我的详细信息页面活动被触发,但我如何知道,当有人点击共享的深度链接时,提供详细的活动显示。

假设您为每个项目生成单独的共享链接。您可以将一些参数与深度链接URL一起发送,然后在应用程序中接收它们。任何一种身份证都足够了。 (来源:)



举个例子,如果应用程序在此处进行深度链接,您可以在相应的活动(此处:com.example.android.GizmosActivity)中接收您的意图,并从中提取信息。

清单文件将保持与此链接中指定的相同

但您可以在发送给用户的链接中提供额外数据,网址为www.example.com/gizmos?key=valueToSend

然后在活动中,你可以做如下事情

Uri data = intent.getData();

data.getQueryParameter("key");
下面的答案是一种简化的方法-

应用程序1:此应用程序将通过深度链接向另一个应用程序发送数据

String deepUrl = "app://anotherapp?key1=value1&key2=value2"; //key1 and key2 for sending data to other application
Intent intent = new Intent (Intent.ACTION_VIEW);
intent.setData (Uri.parse(deepUrl));
startActivity(intent);
这将启动一个使用一些数据作为链接路径参数的另一个应用程序午餐的意图

现在我们需要在第二个应用程序中处理相应的链接,如下所示:

 Intent intent = getIntent();
 Uri data = intent.getData();
 String data1= data.getQueryParameter("key1"); // you will get the value "value1" from application 1 
 String data2= data.getQueryParameter("key2");
应用程序2处理深度链接的清单文件将
intent filter
添加到将处理数据的相应活动,在我的情况下,
MainActivity
就可以了

<activity android:name=".MainActivity">
            ...
            <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="anotherapp"
                    android:scheme="app" />
            </intent-filter>
        </activity>
有关深度链接的更多信息,请参阅官方网站


注意:如果手机中未安装应用程序2,则您可以从应用程序1中获取一个错误,说明
活动NotFoundException

您可以读取启动活动的意图数据,根据特定URL获取优惠信息,然后使用该信息显示正确的活动。关于阅读发布意图的更多细节:我们可以从这个问题中删除Java标记吗?我正在寻找使用java而不是android的深度链接。我想我们可以同意,这两个领域是分开的,这个问题对使用Java+deeplink的人没有帮助question@MustafaShaikh我没有尝试过这个,但也许您可以将“&key2=value2”用于另一个键值对。
 Intent intent = getIntent();
 Uri data = intent.getData();
 String data1= data.getQueryParameter("key1"); // you will get the value "value1" from application 1 
 String data2= data.getQueryParameter("key2");