您好,登錄后才能下訂單哦!
最近在做項目中需要實現(xiàn)網(wǎng)頁啟動手機中的客戶端,如果手機中未裝客戶端則提示用戶下載。這個技術(shù)關(guān)鍵點是用到了scheme,結(jié)合參考支付寶的實現(xiàn)方式,方法如下:
一、網(wǎng)頁中相關(guān)代碼如下:
<html>
<head>
<script>
function open(){
window.location='abc://192.168.0.14:8080/test/app/test.apk';
}
</script>
</head>
<body onload="open()">
<a >下載</a>
</body>
</html>
二、Android中的AndroidManifest.xml要啟動的Activity添加如下代碼:
<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="abc"
android:host="192.168.0.14" />
</intent-filter>
插個曲:上面網(wǎng)頁中命名的abc與AndroidManifest.xml中的abc必須要一致,當(dāng)然了,可以改成你喜歡的名稱。其次,如果你不想精準(zhǔn)匹配的話,AndroidManifest.xml中的<data/>中只需要android:scheme="abc"就行了;如果想精確匹配,那么你就需要寫更詳細一點,比如:android:host、android:port、android:path。
以上就實現(xiàn)了模仿支付寶的網(wǎng)頁啟動與下載功能,大家可以嘗試一下。有一點要注意,scheme不能是http,瀏覽器遇到http時,是不會發(fā)intent給外界了。具體原理大家就百度一下吧,我這里就不說了,說的不好反而誤導(dǎo)你們了,呵呵。
除了上面模仿支付寶的方法外,還有一種方法,就是通過控件WebView來實現(xiàn),當(dāng)然了只有自己的應(yīng)用中的WebView才會實現(xiàn)我們想要的功能,因為要加代碼稍作改動的,別人的應(yīng)用應(yīng)該不會幫你去實現(xiàn)吧?
在自己的應(yīng)用中使用WebView來實現(xiàn)的話,會更加完美,可以做到用僅用一個下載按鈕來實現(xiàn)啟動或下載(若手機中安裝了應(yīng)用,點擊下載就會直接啟動應(yīng)用,而不是去下載應(yīng)用;若手機中沒有安裝應(yīng)用,則點擊下載就會真的去下載應(yīng)用了)。實現(xiàn)方法是在WebView中設(shè)置自定義的WebViewClient,重寫shouldOverrideUrlLoading (WebView view, String url) ,監(jiān)測url是否符合約定,如符合約定,則啟動客戶端,求例代碼如下:
if(url.contains("abc"))
{
try
{
Uri uri = Uri.parse("abc://192.168.0.14:8080/test/app/test.apk");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
catch(Exception e)
{
//啟動失敗
StringBuffer sb = new StringBuffer(url);
sb.replace(0, 11, "http");
Uri uri = Uri.parse(sb.toString());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}
}
相信大家都能看懂吧?再不懂就留言吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。