Android操作Html打開其他APP
現(xiàn)在Android程序員是越來越多,甚至在部分地區(qū)出現(xiàn)供大于求的局面,從大背景來看,Android的生態(tài)鏈會漸漸的趨于理智,并且會不斷的更新人才以及開發(fā)工具,前幾年的eclipse異?;鸨?,現(xiàn)在Android studio憑借著良好的體驗,已經(jīng)有越來越多的人轉(zhuǎn)戰(zhàn)到Android studio里面進(jìn)行開發(fā),所以這也是一個多樣性的體現(xiàn),廢話了這么多,我想要表達(dá)的是,人多不是問題,重要的是自己有這個能力去勝任這份工作,不停的學(xué)習(xí)新技術(shù),更新自己。
現(xiàn)在我們講講,怎么在Html中打開手機(jī)里面的APP,這個需求現(xiàn)在使用的也是越來越廣泛了,比如淘寶、支付寶的支付等等,都是使用到了這個功能,但是到底怎么去實現(xiàn)呢,我這里就使用webview來模擬這樣的一個功能,首先看看html里面代碼:
<!DOCTYPE HTML> <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <body> <a href="xiaopinggaiblog://xiappinggai/open">打開app</a><br/> </body> </html>
對的,你沒有看錯,就這么幾行代碼,沒有用到 js,也沒有使用到css,(/a)標(biāo)簽是一個超鏈接標(biāo)簽,這個相信有點基礎(chǔ)的人是看得懂的,重要的是看看這個超鏈接里面的內(nèi)容:xiaopinggaiblog://xiappinggai/open,這個是我自己自定義的,先看看我們要打開的應(yīng)用程序的注冊文件里面的寫法:
<activity
android:name=".MainActivity"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<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.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:pathPrefix="/xiappinggai/open"
android:scheme="xiaopinggaiblog" />
</intent-filter>
</activity>
我這里模擬的是打開另外一個程序的主界面,看到下面的一個意圖過濾器,這里有一個< data/>標(biāo)簽,這個標(biāo)簽里面的內(nèi)容:
<data android:pathPrefix="/xiappinggai/open"
android:scheme="xiaopinggaiblog" />
PathPrefix屬性只指定了部分路徑,它會跟Intent對象中的路徑初始部分匹配。
scheme屬性用于設(shè)定URI的scheme部分。它是給指定URI設(shè)置的最基本的屬性,至少要給過濾器設(shè)置一個scheme屬性,否則,其他的URI屬性就沒有意義了。
這要這么配置,那就可以完美的打開其他APP了,同時,有的瀏覽器也支持這個功能,假如在測試的時候出現(xiàn)不能打開的情況,那么可以考慮換一個瀏覽器測試。
接下來,我們再看看怎么傳數(shù)據(jù)到那個應(yīng)用程序呢?其實也不難,只需要改一下url就行了:具體如下:
xiaopinggaiblog://xiappinggai/open?data=xiaopinggaiblog
如果要穿多個參數(shù)呢?其實也是可以的,可以用&符號去連接,這么寫:
xiaopinggaiblog://xiappinggai/open?data=xiaopinggaiblog&arga=value
那么在那個應(yīng)用程序怎么接收呢,其實也是幾行代碼的事,我們在要接收數(shù)據(jù)的Activity里面這樣寫:
Uri uridata = this.getIntent().getData();
if (uridata!=null) {
String mydata = uridata.getQueryParameter("data");
}
這樣寫就可以獲取到數(shù)據(jù)了,但是還有一個問題,當(dāng)要打開的APP沒有安裝,那這個時候點擊打開APP會出現(xiàn)錯誤,這樣就很影響交互體驗了,因此我們可以這么做:
mWeb.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
mWeb.loadUrl("file:///android_asset/html2.html");
Toast.makeText(MainActivity.this, "沒有這個APP", 0).show();
}
});
這樣做就可以,這是在網(wǎng)頁加載失敗的時候執(zhí)行的操作。我們除了可以這樣提示,我們也可以讓他跳轉(zhuǎn)到App的下載地址等一系列自己想要的操作。
好了,全部代碼都在這里了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中創(chuàng)建快捷方式及刪除快捷方式實現(xiàn)方法
這篇文章主要介紹了Android中創(chuàng)建快捷方式及刪除快捷方式實現(xiàn)方法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-06-06
解決android設(shè)備斷電重啟后WIFI不能自動重連的BUG(收藏)
這篇文章主要介紹了解決android設(shè)備斷電重啟后WIFI不能自動重連的BUG,本文給出了問題描述及分析過程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
Android使用ContentProvider實現(xiàn)查看系統(tǒng)短信功能
這篇文章主要為大家詳細(xì)介紹了Android使用ContentProvider實現(xiàn)查看系統(tǒng)短信功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11

