Android URL Scheme
前言:
我們?cè)谑褂梦⑿诺倪^(guò)程中,經(jīng)常可以通過(guò)別人分享的鏈接,直接跳轉(zhuǎn)到一些APP內(nèi)部。比如京東、網(wǎng)易云音樂(lè),我們通過(guò)在這兩個(gè)APP內(nèi)部分享鏈接到微信,微信中點(diǎn)擊鏈接進(jìn)入微信瀏覽器打開分享的頁(yè)面,可以在頁(yè)面中看到直接打開的按鈕,點(diǎn)擊直接打開就進(jìn)入了該APP的對(duì)應(yīng)的頁(yè)面。實(shí)際上就是從微信瀏覽器中的一個(gè)頁(yè)面跳轉(zhuǎn)到APP指定的頁(yè)面。這一種效果就是通過(guò)URL Scheme來(lái)實(shí)現(xiàn)的。
URL Scheme
URL Scheme是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議,通過(guò)定義自己的URL Scheme協(xié)議,可以
從一個(gè)APP中打開另外一個(gè)APP指定的頁(yè)面,也可以從H5頁(yè)面中跳轉(zhuǎn)到APP指定的頁(yè)面(實(shí)際上就是從一個(gè)瀏覽器中的一個(gè)頁(yè)面跳轉(zhuǎn)到APP指定頁(yè)面)。
URL Scheme協(xié)議格式:
一個(gè)完整的完整的URL Scheme協(xié)議格式由scheme、host、port、path和query組成,其結(jié)構(gòu)如下所示:
<scheme>://<host>:<port>/<path>?<query>scheme可以是常見的協(xié)議名 (http、file等)也可以是自定義的協(xié)議名(自定義一個(gè)字符串即可),一般打開一個(gè)APP,大多使用自定義的協(xié)議名。
如下就是一個(gè)自定義的URL
caishilive://caishi:8080/loadtooldetail?tool_id=100
caishilive:即Scheme 該Scheme協(xié)議名稱
caishi:即Host,代表Scheme作用于哪個(gè)地址域
8080:即port,代表端口號(hào)
loadtooldetail:即path,代表打開的頁(yè)面
tool_id:即query,代表傳遞的參數(shù)
URL Scheme使用
URL Scheme的使用要先在AndroidManifest.xml中配置能接受Scheme方式啟動(dòng)的activity;
獲取Scheme跳轉(zhuǎn)的參數(shù)
Intent intent = getIntent();String scheme = intent.getScheme();String dataString = intent.getDataString();Uri uri = intent.getData();if (uri != null) {//完整的url信息String url = uri.toString();//scheme部分String schemes = uri.getScheme();//host部分String host = uri.getHost();//port部分int port = uri.getPort();//訪問(wèn)路徑String path = uri.getPath();//編碼路徑String path1 = uri.getEncodedPath();//query部分String queryString = uri.getQuery();//獲取參數(shù)值String systemInfo = uri.getQueryParameter("tool_id");}調(diào)用方式:
(1)網(wǎng)頁(yè)調(diào)用
<a href="caishilive://caishi:8080/loadtooldetail?tool_id=100">打開APP工具詳情頁(yè)</a>(2)APP上調(diào)用
Intent action = new Intent(Intent.ACTION_VIEW);StringBuilder builder = new StringBuilder();builder.append("caishilive://caishi:8080/loadtooldetail?tool_id=100");action.setData(Uri.parse(builder.toString()));startActivity(action);當(dāng)然跳轉(zhuǎn)前要判斷一下該URL Scheme是否有效
private boolean schemeValid() {PackageManager manager = mContext.getPackageManager();Intent action = new Intent(Intent.ACTION_VIEW);action.setData(Uri.parse("caishilive://caishi:8080/loadtooldetail?tool_id=100"));List list = manager.queryIntentActivities(action, PackageManager.GET_RESOLVED_FILTER);return list != null && list.size() > 0;}以上就是URL Scheme的使用
總結(jié)
以上是生活随笔為你收集整理的Android URL Scheme的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: GridView, DataGrid 中
- 下一篇: 国际电话号码的写法