我有2个活动-MainActivity和DeepLinkActivity。 MainActivity生成一个链接。当我从短信中单击DeepLink时,我希望DeepLinkActivity打开,但是MainActivity总是打开。
清单文件如下:
<activity
android:name=".MainActivity"
android:theme="@style/Theme.AppCompat"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DeepLinkActivity"
android:label="@string/app_name"
android:theme="@style/ThemeOverlay.MyDialogActivity">
<!-- [START deep_link_filter] -->
<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="blessd.mobi" android:scheme="http"/>
<data android:host="blessd.mobi" android:scheme="https"/>
</intent-filter>
<!-- [END deep_link_filter] -->
</activity>
两个活动的片段
MainActivity
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_referral);
//long
String link = "http://www.blessd.mobi";
DynamicLink m = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))....
DeepLinkActivity
public class DeepLinkActivity extends AppCompatActivity implements
View.OnClickListener {
private static final String TAG = DeepLinkActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.deep_link_activity);
Log.d(TAG,"Deep Activity" );
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();
}...
谢谢
答案 0 :(得分:1)
在清单活动中,您必须具有过滤器:
<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="yourlinkhost.com"
android:scheme="http" />
<data
android:host="yourlinkhost.com"
android:scheme="https" />
</intent-filter>
它应该处理您的链接。 Maby您的链接具有错误的主机方案-当我的链接具有错误的主机时,我遇到了此类问题。但是您拥有的解决方案-看起来不错,而且对我来说效果也不错。
答案 1 :(得分:0)
您必须在意向过滤器上添加其他数据。
<data
android:host=""
android:path=""
android:scheme="" />
并且您必须在创建共享意图时设置这些数据。
builder.scheme(getString(R.string.config_scheme)) // "http"
.authority("your url") // your host
.appendPath(getString(R.string.path)) // "your path"
.appendQueryParameter(QUERY_PARAM, data)