2009-02-08 15 views
146

Tôi muốn ý định của tôi được đưa ra khi người dùng đi đến một url nào đó: ví dụ, thị trường Android hiện điều này với http://market.android.com/ url. youtube cũng vậy Tôi cũng muốn tôi làm điều đó.Respond Android tới URL trong Ý định

+8

Có một câu trả lời tuyệt vời cho câu hỏi này tại http://stackoverflow.com/questions/2448213/how-to-implement-my-very-own-uri-schema-on-android/2448531#2448531 – neu242

+2

Có một câu trả lời tốt hơn cho câu hỏi này http://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app – rds

Trả lời

183

Tôi đã làm được! Sử dụng <intent-filter>. Đưa thông tin sau vào tệp kê khai của bạn:

<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:host="www.youtube.com" android:scheme="http" /> 
</intent-filter> 

Điều này hoạt động hoàn hảo!

+8

Nó không hoạt động cho tôi. Bạn có thể vui lòng đưa ra một ví dụ-Liên kết sẽ mở Ứng dụng. –

+7

Tôi muốn phản ứng với "www.youtube.com" nhưng KHÔNG "www.youtube.com/fr /" ... Bất kỳ ý tưởng nào tôi có thể làm điều đó? – Gilbou

+0

Điều này hoạt động hoàn hảo, cảm ơn, nhưng tôi cũng cần có được URL đã được nhấp để mở ứng dụng. bất cứ ai có thể giải thích làm thế nào để làm điều này? – boogieman

7

Bạn có thể cần phải thêm các hoán vị khác nhau vào bộ lọc ý định của bạn để làm cho nó hoạt động trong các trường hợp khác nhau (http/https/ect).

Ví dụ, tôi đã phải làm như sau cho một ứng dụng mà sẽ mở ra khi người dùng mở một liên kết đến hình thức ổ google, www.docs.google.com/forms

Lưu ý rằng con đường tiền tố là không bắt buộc.

 <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="http" 
       android:host="docs.google.com" 
       android:pathPrefix="/forms"/> 
      <data 
       android:scheme="http" 
       android:host="www.docs.google.com" 
       android:pathPrefix="/forms" /> 

      <data 
       android:scheme="https" 
       android:host="www.docs.google.com" 
       android:pathPrefix="/forms" /> 

      <data 
       android:scheme="https" 
       android:host="docs.google.com" 
       android:pathPrefix="/forms" /> 
     </intent-filter>