我已经编写了以下意图过滤器以使用我的应用程序打开文本文件。它似乎有效,但仅在某些时候。例如,如果我通过电子邮件发送文本文件,如果选择从邮件打开,则不会显示我的应用程序。如果我选择先保存然后打开,则将显示我的应用程序。与保管箱类似的经验,如果我尝试从保管箱打开,我的应用将不会被列为能够打开,但是如果我从保管箱导出到sd并使用文件管理器将其打开,则会列出我的应用并作品。

<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" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="*" android:pathPattern=".*\\.txt" />
      <data android:scheme="https" android:host="*" android:pathPattern=".*\\.txt" />
      <!--  <data android:scheme="content" android:host="*" android:pathPattern=".*\\.txt" /> -->
  <data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.txt" />
   </intent-filter>

最佳答案

Dropbox和电子邮件应用程序可能使用内容提供程序,并且与pathPattern不匹配。通常,内容提供程序不包含文件扩展名,而是使用mime类型指示要打开的文件类型。如果您打算打开任何text/plain文件,而不必只打开扩展名为.txt的文件,那么最好完全关闭pathPattern

<intent-filter>
      <data android:mimeType="text/plain" />
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

07-27 13:30