[英]how can I pass data to android Market using the new scheme on chrome?
[英]How do I pass parameters to android Intent in new scheme on chrome?
我有一個 Web 應用程序通過 iframe 意圖調用 android 上的本機應用程序,該意圖在 chrome 25 中不起作用,具體如下....
https://developers.google.com/chrome/mobile/docs/intents
意圖的結構如下......
app://Requesttype=Testing&Type=123&tn=0000000000
在新的 intent:// 方案中,我將如何將 app:// 之后列出的參數傳遞給本機應用程序? 我一直沒能找到一個例子。
使用新方案,您可以將參數作為附加參數傳遞給應用程序,但必須按如下方式對 URI 進行編碼:
<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.myextra=mystring;end">Do Whatever</a>
這將傳遞一個名為“myextra”的額外字符串,其值為“mystring”。 看看Android 代碼,我們可以看到額外的參數需要如何編碼。 “myextra”參數開頭的“ S ”將其定義為字符串。 其他類型可以是:
String => 'S'
Boolean =>'B'
Byte => 'b'
Character => 'c'
Double => 'd'
Float => 'f'
Integer => 'i'
Long => 'l'
Short => 's'
例如,如果我們想傳遞兩個額外的參數,一個整數和一個字符串,我們可以這樣做:
<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.name=Perico%20de%20los%20Palotes;i.age=35;end">Do Whatever</a>
請注意,您需要對所有參數進行 url 編碼。
在您的 Android 應用中,您需要接受這些附加功能。 在您的活動的“onCreate”事件中:
Bundle parametros = getIntent().getExtras();
if (extras != null){
String name = extras.getString("name");
Integer age = extras.getInt("age");
if (name!=null && age!=null)
{
//do whatever you have to
//...
}
}else{
//no extras, get over it!!
}
而且,當然,在您的清單中添加過濾器android.intent.category.BROWSABLE ,如此鏈接所示。
對於方案 URL:
appname://RequestType/?Type=123&tn=0000000000
您可能想要映射到以下意圖 URL:
intent://RequestType/?Type=123&tn=0000000000#Intent;scheme=appname;package=com.example.appname;end
您不能再使用 iframe 和自定義協議來打開本機應用程序。
但是,您可以使用現有的Intent:// 語法來啟動和 Intent 並傳遞數據,如果未安裝它,它還有一個額外的好處是將用戶帶到 Play 商店。
您可以按照文檔記錄在語法的“路徑”部分中對數據進行編碼,以便您可以使用intent://play/?a=1#Intent;......;end;
或者您可以將其編碼為 Extra。
意圖在 4.4.4 之后不起作用,所以這就是我為我的應用程序所做的。
創建自定義方案以使用以下意圖過濾器在 AndroidManifest.xml 中啟動我的活動
1)
<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="<<YOUR UNIQUE SCHEME(I SUGGEST YOUR PACKAGE NAME)"/>
</intent-filter>
2) 使用后備 url 構建市場 url,它通過上面創建的自定義方案打開您的應用程序。
market://details?id=<<your app package from AndroidManifest.xml>>&url=<<your app custom scheme from AndroidManifest.xml>>://yourdomain.com?encoded(p1=v1&p2=v2....etc)
如果您的應用程序未安裝,這將打開商店,如果應用程序已安裝,則使用您的解碼參數打開帶有意圖數據的應用程序。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.