簡體   English   中英

從應用程序打開android深度鏈接

[英]Opening android deep links from app

我在我的應用程序內實現深層鏈接,找不到方法,或從我自己的應用程序內部打開它們的示例。 例如:我希望打開某些橫幅會打開myapp://game/1鏈接,這將導致我的應用程序內發生另一項活動。 我怎樣才能做到這一點 ?

在清單中,您應該注冊深層鏈接方案。

    <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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM