Android URL Scheme喚醒之門

1、scheme的作用

Android的scheme 是一種頁面內(nèi)跳轉(zhuǎn)協(xié)議。通過scheme 可以進(jìn)行頁面跳轉(zhuǎn),可以是app之間的跳轉(zhuǎn),
也可以是網(wǎng)頁和app之間的跳轉(zhuǎn)。

2、scheme的定義

協(xié)議://協(xié)議地址/端口/路徑/參數(shù)
scheme://nade/startapp?data="123456"

協(xié)議:scheme(可以自定義)
協(xié)議地址:(可以自定義)
端口:(可以自定義)
路徑:
參數(shù):

3、scheme的使用

1、app內(nèi)使用:
/**
* scheme跳轉(zhuǎn)
* @param s
*/
private void schemeJump(String s) {
if (!checkScheme(s)) {
showToast("頁面不存在");
}
Intent schemeIntent = new Intent(Intent.ACTION_VIEW);
schemeIntent.setData(Uri.parse(s));
startActivity(schemeIntent);
}

2、網(wǎng)頁內(nèi)使用

// h5調(diào)用
<a href="scheme://nade/startapp?data=123456">app目標(biāo)頁面</a>

3、app解析處理

Intent intent = getIntent();
if (intent.getData() != null) {
Uri uri = intent.getData();
//獲取uri鏈接
LogUtils.d("nade",uri.toString());
//獲取協(xié)議
LogUtils.d("nade",uri.getScheme());
//獲取協(xié)議鏈接
LogUtils.d("nade",uri.getHost());
//獲取端口
LogUtils.d("nade",String.valueOf(uri.getPort()));
//獲取路徑
LogUtils.d("nade",uri.getPath());
//獲取參數(shù)
LogUtils.d("nade",uri.getQueryParameter("data"));
//獲取參數(shù)集合
for (String data : uri.getQueryParameters("data")) {
LogUtils.d("nade",data);
}
}

/**
* 檢測scheme鏈接是否可用
* @param s
* @return
*/
public boolean checkScheme(String s){
PackageManager manager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(s));
List<ResolveInfo> uris = manager.queryIntentActivities(intent, PackageManager.GET_RESOLVED_FILTER);
return uris != null && uris.size() > 0;
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容