Android中一個不爲人知的功能,可以讓您經過Android Intent
直接從網頁啓動應用程序。一種方案是當用戶到達頁面時啓動應用程序,您能夠經過在自定義URI方案設置爲src的頁面中嵌入iframe來實現,以下所示:<iframe src =「paulsawesomeapp://page1」 > </iframe>
。此功能適用於Chrome for Android瀏覽器,版本18及更早版本。固然,它也工做在Android瀏覽器。javascript
Chrome(Android版)25
以上版本的功能已略有變化。沒法再經過設置iframe
的src
屬性來啓動Android應用。例如,使用自定義方案(如paulsawesomeapp://
)將iframe
導航到URI,即便用戶安裝了相應的應用程序,也不會工做。相反,您應該實現經過用戶手勢自定義方案啓動應用程序,或使用本文中描述的intent:
語法。html
最佳實踐是構造一個意圖錨點並將其嵌入到頁面中,以便用戶能夠啓動應用程序。這爲您提供了更多的靈活性,以控制如何啓動應用程序,包括經過Intent Extras傳遞額外的信息到應用程序的能力。java
基於意圖的URI的基本語法以下:android
intent:
HOST/URI-path // Optional host
#intent;
package = [string];
action = [string];
category = [string];
component = [string];
scheme = [string];
end;複製代碼
查看Android源代碼來了解解析細節。git
此外,您能夠選擇經過添加如下字符串來指定回調網址:github
S.browser_fallback_url=[encoded_full_url]複製代碼
當沒法解析意圖或沒法啓動外部應用程序時,若是給定了回調網址,用戶將會被重定向到回調網址。chrome
Chrome不啓動外部應用程序的一些示例狀況以下:瀏覽器
JavaScript
計時器試圖打開一個沒有用戶手勢的應用程序。注意S.<name>
是一種定義字符串附加的方法。選擇S.browser_fallback_url
是爲了向後兼容,但目標應用程序不會看到browser_fallback_url
值,Chrome會刪除它。安全
這裏有一個意圖,啓動Zxing條碼掃描器應用程序。它遵循如下語法:app
intent:
//scan/
#Intent;
package=com.google.zxing.client.android;
scheme=zxing;
end;複製代碼
要啓動Zxing條形碼掃描器應用程序,您須要在錨上對href
進行編碼,以下所示:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>複製代碼
參見Android Zxing Manifest,它定義了包和主機。
此外,若是指定了回調網址,則完整網址將以下所示:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end"> Take a QR code </a>複製代碼
如今,若是沒法找到應用程序,或者連接是由沒有用戶手勢的JavaScript
觸發的(或者咱們不啓動外部應用程序的其餘狀況),則URL
將使您進入zxing.org
。
href = "intent:mydata#Intent;action=myaction;type=text/plain;end"複製代碼
從用法上看,仍是很好理解的,這裏的代碼等價於以下Java代碼:
Intent intent = new Intent("myaction");
intent.setData(Uri.parse("mydata"));
intent.setType("text/plain");複製代碼
intent://foobar/#Intent;action=myaction;type=text/plain;S.xyz=123;i.abc=678;end複製代碼
上面的語句,等價於以下Java代碼:
Intent intent = new Intent("myaction");
intent.setData(Uri.pase("//foobar/"));
intent.putExtra("xyz", "123");
intent.putExtra("abc", 678);複製代碼
若是經過intent
調用的activity
包含extras
功能,您也應該包括這些extras
功能。
只有具備category filter
的activity
,android.intent.category.BROWSABLE
可以使用此方法調用,由於它表示該應用程序能夠安全地從瀏覽器打開。
在下列狀況下,Chrome不會爲指定的Intent URI
啓動外部應用程序。
Intent URI
從鍵入的URL重定向時。Intent URI
啓動時沒有用戶手勢。