2012-03-20 35 views
2

我想註冊我的應用程序與一些文件擴展名關聯。 AndoidManifest.xml包含:意圖過濾器不會去Android系統

<application 
     android:icon="@drawable/ic_launcher" 
       android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
        android:name=".IntentTestActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter > 
          <action android:name="android.intent.action.VIEW" /> 
          <category android:name="android.intent.category.DEFAULT" /> 
          <data android:scheme="file" /> 
          <data android:host="*" /> 
          <data android:pathPattern=".*\\.XXX" /> 
      </intent-filter> 
     </activity> 
    </application> 

,但我甚至不看我的應用程序中的視圖操作的列表。 即使在我的應用程序的代碼顯示了什麼,但我的應用程序:

final PackageManager packageManager = getPackageManager(); 
    final Intent intent = new Intent("android.intent.action.VIEW"); 
    List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 
      PackageManager.MATCH_DEFAULT_ONLY); 
    for (ResolveInfo r : list) { 
     Log.d("XXX", "" + r); 
    } 

什麼是錯的或者我怎麼回事,應該特別行動的文件擴展名關聯?

回答

1

這解決了我的問題: 看來,dropbax,谷歌驅動器和其他應用程序有點'。'在他們的完整路徑中, 和那個android regex'。'不貪心...

<data android:pathPattern=".*\\.XXX" /> 
<data android:pathPattern=".*\\..*\\.XXX" /> 
<data android:pathPattern=".*\\..*\\..*\\.XXX" /> 
<data android:pathPattern=".*\\..*\\..*\\..*\\.XXX" /> 
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.XXX" />