如何在一个 Activity 中管理 android 深度链接和 Applink?
How to manage andorid deeplink and Applink in one Activity?
如何将deeplink和applink合二为一Activity?
这是当前 AndroidManifest.xml 设置。
<activity android:name=".MainActivity" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-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:scheme="peterworks" android:host="open"/>
</intent-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:scheme="https" android:host="peterworks.io"/>
</intent-filter>
</activity>
这是使用 deeplink 和 Android Applink 管理您的 deeplinkActivity 的示例代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// onNewIntent Method will process every deeplink data.
onNewIntent(MainActivity.this.getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// setIntent should be called for get new deeplink data. If this is not called, always same deeplink will called
setIntent(intent);
// Deeplink data process start
Uri myDeeplink = intent.getData();
if (myDeeplink != null){
if(myDeeplink.getScheme().equals("https")) {
// Do your things when Android Applink is open your app.
} else {
// Do your things when Deeplink is open your app.
}
}
}
您可以尝试使用以下库来简化此过程:https://github.com/airbnb/DeepLinkDispatch
它提供了一种基于注释的方法来集成深层链接。
文档中的示例:
@DeepLink("example://example.com/deepLink/{id}")
public class SampleActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (intent.getBooleanExtra(DeepLink.IS_DEEP_LINK, false)) {
Bundle parameters = intent.getExtras();
String idString = parameters.getString("id");
// Do something with idString
}
}
}
如何将deeplink和applink合二为一Activity? 这是当前 AndroidManifest.xml 设置。
<activity android:name=".MainActivity" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-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:scheme="peterworks" android:host="open"/>
</intent-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:scheme="https" android:host="peterworks.io"/>
</intent-filter>
</activity>
这是使用 deeplink 和 Android Applink 管理您的 deeplinkActivity 的示例代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// onNewIntent Method will process every deeplink data.
onNewIntent(MainActivity.this.getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// setIntent should be called for get new deeplink data. If this is not called, always same deeplink will called
setIntent(intent);
// Deeplink data process start
Uri myDeeplink = intent.getData();
if (myDeeplink != null){
if(myDeeplink.getScheme().equals("https")) {
// Do your things when Android Applink is open your app.
} else {
// Do your things when Deeplink is open your app.
}
}
}
您可以尝试使用以下库来简化此过程:https://github.com/airbnb/DeepLinkDispatch
它提供了一种基于注释的方法来集成深层链接。
文档中的示例:
@DeepLink("example://example.com/deepLink/{id}")
public class SampleActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (intent.getBooleanExtra(DeepLink.IS_DEEP_LINK, false)) {
Bundle parameters = intent.getExtras();
String idString = parameters.getString("id");
// Do something with idString
}
}
}