Android實(shí)現(xiàn)H5點(diǎn)擊打開app或跳轉(zhuǎn)指定界面
本文原創(chuàng)浮定,轉(zhuǎn)載請(qǐng)注明出處慕购。歡迎關(guān)注我的 簡(jiǎn)書洲胖。
安利一波我寫的開發(fā)框架:MyScFrame喜歡的話就給個(gè)Star
場(chǎng)景
有時(shí)候?yàn)榱朔奖阌脩粼贖5界面上直接下載app或者打開手機(jī)app竣况,我們會(huì)在H5界面上添加一個(gè)按鈕,點(diǎn)擊按鈕可以實(shí)現(xiàn)下載或者打開app的功能峦失。關(guān)于下載功能這里不做敘述,這里主要講述打開app并跳轉(zhuǎn)到指定界面的業(yè)務(wù)如何實(shí)現(xiàn)商膊。
規(guī)則
<scheme>://<host><pathPrefix>?<自定義參數(shù)>
這樣寫可能大家看不大懂,沒事宠进,我們接著往下看晕拆。
關(guān)鍵代碼
1.AndroidManifest中加入intent-filter:
<activity
android:name=".view.login.WelcomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<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:scheme="android" android:host="h5" android:pathPrefix="/open"/>
</intent-filter>
</activity>
我們要在擁有android:name="android.intent.action.MAIN
參數(shù)的界面下新增一個(gè)intent-filter
<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:scheme="android" android:host="h5" android:pathPrefix="/open"/>
</intent-filter>
至于為什么要在android:name="android.intent.action.MAIN
參數(shù)的界面下新增而不是其他界面,這應(yīng)該不需要多做敘述了吧材蹬,想必android:name="android.intent.action.MAIN
參數(shù)的作用大家都懂实幕。
2.參數(shù)描述:
android:scheme="android" 用來(lái)辨別啟動(dòng)的app
android:host="h5" 可以當(dāng)成是一個(gè)域名,這邊建議使用應(yīng)用的包名
android:pathPrefix="/open" 參數(shù)路徑前綴
如果你要傳遞type=1
堤器,id=7
這兩個(gè)參數(shù)的話昆庇,在H5中展示效果應(yīng)該是:
<a href="android://h5/open?type=1&id=7">打開看看</a>
3.接收參數(shù):
Intent intent = getIntent();
String action = intent.getAction();
String type= null;
String id = null;
if (Intent.ACTION_VIEW.equals(action)) {
Uri uri = intent.getData();
if (uri != null) {
type = uri.getQueryParameter("type");
id = uri.getQueryParameter("id ");
}
}
4.建議:
實(shí)際開發(fā)過(guò)程中,如果直接從WelcomeActivity
跳轉(zhuǎn)到指定界面的話闸溃,返回的時(shí)候可能會(huì)直接退出應(yīng)用(我開發(fā)的若干個(gè)應(yīng)用中WelcomeActivity
界面在跳轉(zhuǎn)其他界面后都會(huì)直接關(guān)閉整吆。)如果是在指定頁(yè)面的返回操作中去啟動(dòng)HomeActivity
的話,可能效果上不是很理想辉川,因?yàn)榇蠖鄶?shù)應(yīng)用的首頁(yè)都是相對(duì)復(fù)雜的表蝙,初始化操作都會(huì)比較耗時(shí)。
所以乓旗,我的個(gè)人建議是通過(guò)發(fā)送EventBus
粘性事件給首頁(yè)府蛇,然后在首頁(yè)里面做相對(duì)應(yīng)的業(yè)務(wù)跳轉(zhuǎn)邏輯,這樣就不影響正常的業(yè)務(wù)邏輯屿愚,而且改動(dòng)起來(lái)也簡(jiǎn)單一些汇跨。
5.其他參考資料
歡迎大家留言指出我的不足妆距。