Android--通過網頁開啟APP並傳值詳解
本來這篇部落格應該寫Git的,但是由於最近專案比較忙,Git的內容還沒有整理完(因為還有GitLab以及Github的內容),所以先寫了這片部落格總結以下比較零碎的東西。現在正在做商城類四網合一開發,所以從網頁通過連線點選開啟App以及從網頁傳資料到APP便成為必須,因為剛做過在加上內容比較少,所以先做一下總結,以便自己以後做複習,也可以為需要的人提供一些幫助。能力有限,歡迎各位大神多提不同意見進行交流。
在使用網頁版京東時可以看到就有此功能的實現,而本篇文章主要介紹通過網頁點選連線如果存在此APP則開啟,不存在則下載此APP,而在Google的官方文件中也有相關介紹,該文件給出了兩種從瀏覽器網頁開啟APP的方式:
第一種:使用者自定義的URI scheme (Custom URI scheme) 第二種:使用“intent”語法(Intent_based URI)
好了,廢話不多說進入主題,下面我們使用第一種方式實現該功能。
使用Custom Scheme URI開啟APP
就Android平臺而言,URI主要分三個部分:scheme, authority and path。其中authority又分為host和port。格式如下:
scheme://host:port/path
舉個實際的例子:
content://com.example.project:200/folder/subfolder/etc ?arg0=1&arg1=2
\---------/ \---------------------------/ \---/ \--------------------------/ \--------------------------/(query我們要傳的值)
scheme host port path (我們要傳的值如果是傳多個值使用&)
\--------------------------------/
authority
1,我們先寫一個簡單的html檔案,使用超連結的方式新增自定義的uri(因為現在自己也正在學習h5,所以能寫的東西不多,湊合者看),我寫的比較多,uri可以簡單些成:<a href="a://b.com/?t1=k&t2=0">
<html> <meta charset="UTF-8"> <body> <h1>Test Scheme</h1> <!--自動載入隱藏頁面跳轉--> <!--手動點選跳轉--> <a href="ckck://myProject.com:80/mypath?name=從html頁面傳過來的值之我愛中國">點選開啟APP並將name的值傳過去</a> </body> </html>
2, 然後需要在想要開啟的App的AndroidManifest.xml檔案中新增過濾器intent-filter,如下圖所示:
要獲得html頁面傳過來的值我們需要在Activity中新增下面的程式碼:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView= (TextView) findViewById(R.id.tv_main_show);
Intent intent = getIntent();
Uri uri=intent.getData();
if(uri!=null){
String name=uri.getQueryParameter("name");
String scheme= uri.getScheme();
String host=uri.getHost();
String port=uri.getPort()+"";
String path=uri.getPath();
String query=uri.getQuery();
mTextView.setText("獲得的資料name="+name+"/r"+"scheme"+scheme+"/r"+"host" +
"host"+host+"/r"+"port"+port+"/r"+"path"+path+"/r"+"query"+query);
}
然後使用手機瀏覽器開啟html檔案就可以開啟手機上的APP並獲取從html頁面傳過來的值:
3,實現通過網頁開啟APP如果手機中沒有此APP就去下載:
時間有限(最近專案比較忙) 至於第二種方式實現該功能以及實現的風險可以參考另一篇部落格,以後有時間了再將其他的內容補上。