从app打开android深层链接

时间:2016-06-08 05:57:24

标签: android deep-linking

我正在我的应用程序中实现深层链接,无法找到方法,或者从我自己的应用程序中打开它们的示例。例如:我希望打开某个横幅会打开myapp://game/1链接,这会导致我的应用内的其他活动。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

在清单中,您应该注册深层链接方案。

    <activity android:name=".DeepLinkingActivity"
        android:configChanges="orientation|screenSize" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="myapp" />
        </intent-filter>
    </activity>

这样,当单击具有已定义方案的链接时,将打开DeepLinkingActivity。并在活动处理中做什么:

private final String GAME_LINK = "game";
private final String VIDEO_LINK = "video";

private static String PASSED_LINK = "PassedLink";

public static Intent createIntent(String link, Context context) {
    Intent intent = new Intent(context, DeepLinkingActivity.class);
    intent.putExtra(PASSED_LINK, link);
    return intent;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    String host;
    String link = getIntent().getStringExtra(PASSED_LINK);
    if(TextUtils.isEmpty(link)) {
       Intent intent = getIntent();
        if (intent.getData() != null) {
            Uri data = intent.getData();
            host = data.getHost();
        } else {
           // No links
        }
    } else {
          Uri data = Uri.parse(link);
          host = data.getHost();
    }

    if(host.equals(GAME_LINK))  {
        // myapp://game/
        // Do something
    } else if(host.equals(VIDEO_LINK)){
        // myapp://video/
        // Do something
    } else {
        // Do something
    }
 ...
 }

然后你可以从你的小部件调用:

widget.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(DeepLinkingActivity.createIntent("linik_for_this_wiget"), getContext());
        }
    });

如果您在WebView中有链接,您还可以覆盖shouldOverrideUrlLoading