2012-03-20 28 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" />