H5調(diào)用native并且接收url傳遞參數(shù)(通過Intent讀取Url上面的參數(shù))
url示例:scheme://shop/item/item_id/569c64d85efb115f5e8b4568
(H5端)
參考地址:https://stackoverflow.com/questions/11773958/open-android-application-from-a-web-page
業(yè)務(wù)場景是一個navite頁面谎僻,既可以native間正常調(diào)用缘屹,也可以通過h5調(diào)用
1、Activity在AndroidManifest.xml配置參數(shù):
<activity
android:name=".activity.ProductDetailHotActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.CustomTitle">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="shop.item"
android:scheme="scheme" />
</intent-filter>
</activity>
2雕旨、獲取參數(shù):
如果一個頁面都是通過h5跳轉(zhuǎn)的這個步驟可以省略
private void getIntentData() {
Intent intent = getIntent();
if(intent != null) {//如果是native卖毁,拿到id走正常跳轉(zhuǎn)池颈,不需要通過url跳轉(zhuǎn)
id = intent.getStringExtra(KEY_ID);
Log.i(TAG, "id:" + id);
if(TextUtils.isEmpty(id)) {//通過url跳轉(zhuǎn)并獲取參數(shù)
getIntentDataByUri(intent);
}
}
}
3、getIntentDataByUri()方法實(shí)現(xiàn)
private void getIntentDataByUri(Intent intent) {
if(intent == null) {
return;
}
Uri uri = intent.getData();
if(uri != null) {
List<String> params = uri.getPathSegments();
if(params==null || params.size()<2) {
return;
}
String first = params.get(0); // "item_id"
String second = params.get(1); // "569c64d85efb115f5e8b4568"
Log.i(TAG, "first:" + first + ", second:" + second);
this.id = second;
}
}
錯誤不足之處或相關(guān)建議歡迎大家評論指出刺彩,謝謝迷郑!如果覺得內(nèi)容可以的話麻煩喜歡(?)一下