2014-05-24 88 views
1

所以我們的目標是創建一些只能用我的應用程序打開的獨特類型。這應該發生在整個操作系統。例如:假設我的應用程序在您點擊一個數字(如#12345678.90)後打開。哪裏出現這種類型的數字,它應該自動成爲一個鏈接,並點擊它打開我的應用程序。 這可能嗎?創建自定義鏈接類型以打開應用程序

回答

2

是肯定,如果你使用深層鏈接

您需要將以下行添加到您的活動在AndroidManifest.xml

<data android:scheme="http" 
      android:host="www.example.com" 
      android:pathPrefix="gizmos" /> 

但是這隻能如果您有與任何方案的URI你不妨。

它可以不同於#12345678.90嗎?或者這是要求?

Source

+0

這並不強制OP所需模式的所有字符串都是可點擊的,更不用說到達OP的應用程序,更不用說了*獨一無二*到達OP的應用程序 – CommonsWare

+0

井號或鏈接相同,因爲他希望點擊。不打字。 – Benoit

+0

是的,它也可以不同於#12345678.90。例如:myApp://#1234567890可以用作自定義的uri,並讓我的應用程序讀取這樣的uri就夠了嗎? –

2

所以目標是創造一些獨特的類型,將與我的應用程序只能打開

按照定義,對於SDK應用程序是不可能的。如果您可以編寫代碼來支持響應某些操作,那麼其他人也可以,並且歡迎用戶安裝包含此類代碼的2+應用程序。

這應該在整個操作系統發生

那也是不可能的,除非你建立你自己的ROM國防部,不知怎的,迫使一些字符串的所有出現神奇地變成可點擊的,併爲您的應用神奇的路線。

與您正在尋找的內容最接近的是,如果您的應用有<intent-filter><data>屬性與Linkify支持的模式匹配,類似於Benoit的回答。許多應用程序直接或間接使用Linkify(例如,通過上的android:autoLink),使子串無需任何編程即可點擊。但是:

  • Linkify不支持任意模式

  • 並不是每一個應用程序使用Linkify,如果你的字符串,在那些地方顯示出來,它不一定會是點擊

  • 任何應用程序可以支持相同的模式(例如,Benoit的示例將由瀏覽器以及您的應用程序支持)

+0

謝謝。所以我可以定義自己的uri,它會打開我的應用程序,因爲linkify支持uri。 –

+1

@VyprNoch:是的,如果你有'ACTION_VIEW'的''和一個類似於Benoit的元素'''。但它必須是一個公認的方案,因爲'Linkify'不會假設所有的冒號都是'Uri'。根據[當前的'Linkify'源代碼](https://android.googlesource.com/platform/frameworks/base/+/),它特別需要使用'http','https'或'rtsp'方案。 refs/heads/master/core/java/android/text/util/Linkify.java),因爲我讀過它。這意味着其他應用程序也會響應這些鏈接,而不僅僅是您的鏈接。 – CommonsWare

相關問題