在下载/文档文件夹中为文件类型/扩展名注册Android应用程序

在下载/文档文件夹中为文件类型/扩展名注册Android应用程序,android,Android,当用户在其文件浏览器中单击某个文件(例如,.xyz)时,我正在尝试打开我的应用程序 我在清单文件中的代码是 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <categor

当用户在其文件浏览器中单击某个文件(例如,
.xyz
)时,我正在尝试打开我的应用程序

我在清单文件中的代码是

<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="file"
                android:host="*" />
      <data android:scheme="content"
                android:host="*" />
      <data android:mimeType="application/octet-stream" />
      <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.xyz" />
      <data android:pathPattern=".*\\..*\\..*\\..*\\.xyz" />
      <data android:pathPattern=".*\\..*\\..*\\.xyz" />
      <data android:pathPattern=".*\\..*\\.xyz" />
      <data android:pathPattern=".*\\.xyz" />
      <data android:pathPattern="*.xyz" />
</intent-filter>


但当我使用
values.put(MediaStore.MediaColumns.MIME_TYPE,“application/my_xyz_TYPE”)
执行此操作时,该文件将保存为二进制文件,并将
application/octet stream
作为MIME类型。因此,我假设不可能使用自定义mime类型存储文件

“当用户单击其文件浏览器中的某个文件时,我当前正试图打开我的应用程序(例如….xyz)

在安卓系统中,对于“自定义”文件扩展名,这从来都不是一个好的选择,在现代版本中,这是相当不现实的

这似乎适用于手机存储器中存储的文件,例如Android/文件夹中的文件

不一定。行为会因操作系统版本和“文件浏览器”应用程序而异

当用户单击扩展名为.xyz的文件时,有没有办法在这两个位置打开自己的应用程序

不可以。更一般地说,您应该假设
内容
Uri
没有有用的文件扩展名,就像
http
https
Uri
值通常没有有用的文件扩展名一样

我考虑的另一种选择是使用自定义mime类型来保存文件

您的
不限于应用程序参与保存的文件

因此,我假设不可能使用自定义mime类型存储文件


这不会让我感到惊讶,尽管我没有亲自尝试过。
MediaStore
可能会根据它愿意支持的MIME类型列表检查您提供的MIME类型,如果您的MIME类型不在列表中,则可能会在
application/octet-stream
中作为默认值进行交换。这是另一件事,其行为可能因操作系统而异版本(可能由设备制造商提供)。

令人失望,但感谢您的回答!
<data android:mimeType="application/octet-stream" />
<data android:mimeType="application/my_xyz_type" />