在Android平臺而言,URI主要分三個部分:
scheme,authority,path
其中authority又分爲host和port。格式以下:html
<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]
對應的manifest中的<data>
配置以下:android
<data android:host="" android:mimeType="" android:path="" android:pathPattern="" android:pathPrefix="" android:port="" android:scheme="" android:ssp="" android:sspPattern="" android:sspPrefix=""/>
其中scheme爲必須參數,若沒有指定,那其它的屬性均無效!
若是host沒有指定,那麼port,path,pathPrefix,pathPattern均無效!web
咱們最經常使用的是scheme
,host
,port
,path
這四個配置。api
首先在AndroidManifest
中的MainActivity
中添加一個<intent-filter>
:app
<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="protocol" android:host="domain" android:pathPrefix="/link" /> </intent-filter>
而後在你的網頁中添加一個連接:dom
<a href="protocol://domain/link>打開app</a>
最後,點擊這個a連接,若是app成功彈出,那麼恭喜你,你成功了。ide
光打開app可能還不夠,有時咱們要傳遞數據,那麼怎麼去傳遞數據呢?url
咱們能夠使用上面的方法,把一些數據傳給app,那麼先修改一下連接:code
<a href="protocol://domain/link?id=123>打開app並傳遞id</a>
而後在app上的MainActivity中的onCreate方法中添加代碼:htm
Uri uri = getIntent().getData(); String id= uri.getQueryParameter("id");
這樣就能夠傳遞數據啦!
若是用的是應用內的webview,獲取數據的操做爲:
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri=Uri.parse(url); if(uri.getScheme().equals("protocol")&&uri.getHost().equals("domain")){ String id = uri.getQueryParameter("id"); }else{ view.loadUrl(url); } return true; } });
getScheme(); //得到Scheme名稱 getDataString(); //得到Uri所有路徑 getHost(); //得到host
附上uri的官方api連接
https://developer.android.com...