android如何讓本身開發的播放器成爲可供文件選擇的播放器

在AndroidManifest.xml中添加intent過濾器,並設置data屬性
<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="content"/>
                <data android:scheme="file"/>
                <data android:scheme="http" />
                <data android:mimeType="audio/*"/>
                <data android:mimeType="application/ogg"/>
                <data android:mimeType="application/x-ogg"/>
                <data android:mimeType="application/itunes"/>   
</intent-filter>
在你的播放器Activity中加上這個過濾器
AndroidManifest.xml文件詳解(data) 

語法(SYNTAX): 
<dataandroid:host="string"       android:mimeType="string"       android:path="string"       android:pathPattern="string"       android:pathPrefix="string"       android:port="string"       android:scheme="string"/> 
包含於(CONTAINED IN): 
<intent-filter> 

說明(DESCRIPTION): 

這個元素用於把數據規範添加到一個Intent過濾器中,數據規範可以只是數據類型(mimeType屬性)、或數據位置標識(URI),也能夠是數據類型和數據位置標識(URI)。一個URI(以下格式)被分紅幾個獨立的屬性來分別指定: 

scheme://host:port/path or pathPrefix or pathPattern 
這些屬性是可選的,但也是相互依賴的。若是沒有給Intent過濾器指定scheme屬性,那麼全部其餘的URI屬性都會被忽略。若是沒有給過濾器指定host屬性,那麼port屬性和全部的路徑屬性都會被忽略。 
包含在同一個<intent-filter>元素中全部的<data>元素只會對這個過濾器起做用,例如: 
<intent-filter . . . >     <data android:scheme="something" android:host="project.example.com" />     . . . </intent-filter> 

等同於 
<intent-filter . . . >     <data android:scheme="something" />     <data android:host="project.example.com" />     . . . </intent-filter> 
能夠在<intent-filter>元素內放置多個<data>元素,來給過濾器設置多個數據選項。<data>元素的屬性沒有默認值。 
屬性(ATTRIBUTES): 
android:host 
這個屬性用戶定義URI受權的主機部分,除非給過濾器也指定了<data>元素的scheme屬性,不然這個屬性沒有意義。 
注意:在Android框架中,主機名的匹配是大小寫敏感的,跟RFC格式不同。所以,要始終使用小寫字母來指定主機名。 
android:mimeType 
這個屬性用於設定數據的MIME類型,如:image/jpeg或audio/mpeg4-generic。其子類型可用星號通配符(*)來代替,指示可以跟任何子類型匹配。 
注意:在Android框架中,MIME類型的匹配是大小寫敏感的,跟RFC格式不同。所以,要始終使用小寫字母來指定MIME類型。 
android:path 
android:pathPrefix 
android:pathPattern 
這個三個屬性用於指定URI的路徑部分。Path屬性指定一個完整的路徑,這個路徑會跟Intent對象中的路徑進行匹配。PathPrefix屬性只指定了部分路徑,它會跟Intent對象中的路徑初始部分匹配。pathPattern屬性指定一個要跟Intent對象中的路徑進行匹配的完整路徑,可是這個路徑中能夠包含下列通配符: 

1. 星號(*)通配符,路徑中的*星號表明任意多個星號以前的那個字符,如a*,可跟a、aa、aaa、aaaa、...字符串匹配。 
2. 點跟星號的組合(.*)通配符,它能夠跟任意字符串進行匹配,如.*html,能夠跟abchhtml、chtml、html、dssf.html、…等字符串匹配。 
由於系統讀取XML中的字符串時,會把’\’符號做爲強制轉義字符,所以就須要兩次轉義。例如,符號」*」要被寫成」\\*」,符號’\’要被寫成」\\\\」。這與Java代碼中的寫法基本相同。 

有關這三種模式的更多信息,請看PatternMatcher類中的PATTERN_LITERAL、PATTERN_PREFIX、PATTERN_SIMPLE_GLOB的說明。 
http://developer.android.com/reference/android/os/PatternMatcher.html 
android:port 
這個屬性用於定義URI受權的端口部分。只有給過濾器指定了scheme和host屬性時,這個屬性纔有意義。 
android:scheme 
這個屬性用於設定URI的scheme部分。它是給指定URI設置的最基本的屬性,至少要給過濾器設置一個scheme屬性,不然,其餘的URI屬性就沒有意義了。 
scheme屬性值沒有」:」符號結尾(如,http,而不是http: ) 
若是過濾器有一個數據類型(設置了mimeType屬性),但沒有設置scheme屬性,那麼系統就會假定scheme是content:和file: 
注意:在Android框架中,scheme的匹配時大小寫敏感的,跟RFC格式不同。所以,要始終使用小寫字母來指定scheme。 
相關文章
相關標籤/搜索