2016-12-13 22 views
2

我已經定義了一個意圖過濾器是這樣的:啓動從瀏覽器的活動,併發送數據

<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="bankpaid"/> 
</intent-filter> 

而且我裝從Web瀏覽器這樣的活動,我極力

href="intent://success/#Intent;scheme=bankpaid;package=some.url;end"

讀取發送到如下活動的數據:

protected void onStart() { 
    Intent intent = getIntent(); 
    String action = intent.getAction(); 

    if (Intent.ACTION_VIEW.equals(action)) { 
     String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); 
     Log.d("sharedText", sharedText); 
    } 
    super.onStart(); 
} 

該pr問題是sharedText原來是空的。

如何從網絡將數據發送到活動,以及如何可以在活動接收數據?

+0

看看這裏http://stackoverflow.com/a/4085365/4848308 –

+0

@GueorguiObregon我曾經是能夠做這樣的事情,但是因爲我已經切換到深層應用與瀏覽器的連接,我不知道如何做類似的事情。 –

回答

3

您需要按照標準的規則通過W3C和這樣的,這基本上意味着URI的:不這樣做。

的Android定義了描述一個通用的意圖的URI語法。上有意向的方法轉換,並從這種表示,如:http://developer.android.com/reference/android/content/Intent.html#toUri(int)

因此,要做到這一點的方法是使用普通設備來描述你的清單供種意圖的你會與處理一個特定的組件,特別是在你自己的命名空間中定義一個動作名稱(com.mycompany.myapp.action.DO_SOMETHING或其他)。然後,您可以創建一個與您的組件匹配的Intent,並使用Intent.toUri()獲取此的URI表示。這可以放在你的鏈接中,然後當按下時尋找處理的東西,從而找到你的應用程序。注意從這樣的瀏覽器啓動,組件必須處理BROWSABLE類別。 (你並不需要有這樣的你把該鏈接的意圖,瀏覽器會自動添加這個在你。)

最後,你可能想的意圖的包裝設置與此您的應用程序:http://developer.android.com/reference/android/content/Intent.html#setPackage(java.lang.String)

這是該平臺中的一個新功能,它允許您將鏈接意圖指向只有您的應用程序,以便其他應用程序無法攔截並處理它們。總結:閱讀有關意圖和意圖過濾器的常規文檔(例如NotePad教程,雖然您不會在這裏使用content:URI,可能只是自定義操作),並讓您的應用程序以這種方式工作。然後,您可以使用瀏覽器鏈接以相同的方式啓動您的應用,前提是您的意圖過濾器處理了BROWSABLE類別。