Android 外部URL跳轉到APP的操作

筆墨Android發表於2018-06-26

最近公司有了一個需求,外部連結要能開發本地的APP的操作!我覺得這種操作其實用處挺大的,反正之前我看很多APP都有這個功能,所以就仔細研究了一下,發現實現起來還是很簡單的!

本文知識點

  • 通過外部URL開啟本地app
  • 獲取傳遞的相應內容

首先我們需要明確的是,移動端都應該做些什麼?我們應該和前端定義好相應的請求頭部!只要確定好這個頭部就能實現跳轉了,最開始我也是這麼做的!之後在說為什麼我需要改?

這裡先來一個簡單的h5頁面,因為我不是前端開發,所以這裡就來個最簡單的!程式碼是這樣的!

<html>  
<meta charset="UTF-8">  
   <body>  
     <h1>Test Scheme</h1>
      <!--手動點選跳轉-->  
      <a href="test://splash/mypath?content=從html頁面傳過來的值">點選跳轉APP並傳值</a> 
   </body>  
</html>  
複製程式碼

準備工作都已經做完了,那麼上下的就是我們的事情了!

1. 通過外部URL開啟本地app

首先我們要理解一個URL的具體含義

一個url的具體含義

有了這個那就好說了!當我們隱式啟動Activity的時候,都需要配置相應的 intent-filter 當你配置這個東西的時候一定會設定相應的屬性,那麼這個東西就更好說了!

        <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="test" />
            <data android:host="splash" />
        </intent-filter>
複製程式碼

這裡的test是和伺服器約定好的內容,也就是scheme中的欄位。其實通過以上程式碼,就可以解決相應的跳轉問題了!但是我一直在想一個問題,為什麼需要自己定義scheme這個欄位,為什麼不直接用http或者https呢?最後我發現其實也是可以的!

2. 獲取傳遞的相應內容

關於獲取傳遞內容的方案啊!其實就是從uri中獲取相應的引數而已。這裡就直接上程式碼吧!

        Intent intent = getIntent();
        if (intent != null) {
            //獲取整個uri的連結
            String dataString = intent.getDataString();
            //獲取相應Uri中的一些內容!
            Uri data = intent.getData();
            String scheme = data.getScheme();
            String authority = data.getAuthority();
            String host = data.getHost();
            String port = String.valueOf(data.getPort());
            String path = data.getPath();
            String query = data.getQuery();
        }
複製程式碼

這裡可以獲取任何uri中的內容,這裡提一嘴,如果你在閃屏頁處理這裡的邏輯,可以根據path或者port的路徑跳轉到不同的介面。也算是一種方案!!!

今天就到這裡吧!好久不寫部落格了,感覺自己真的是懶癌患者! 其實也不知道寫什麼,所以就記錄每天開發中的內容吧!哈哈。。。

相關文章