Android 应用程序的注册文件类型无法正常工作
我正在为我的应用程序使用以下意图过滤器Android 应用程序的注册文件类型无法正常工作,android,Android,我正在为我的应用程序使用以下意图过滤器 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSAB
<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:mimeType="*/*" />
<data android:pathPattern=".*\\.etxt" />
</intent-filter>
但令我惊讶的是,该应用程序现在也想打开其他类型的文件,比如apk文件。我犯了什么错误?试试看
<data android:pathPattern=".\\*.etxt" />
不是
请告诉我它是否有效我找到了这个
仅当还为指定了方案和主机属性时,这些属性才有意义
过滤器
所以如果你想使用android:pathPattern,你应该有scheme和host
它在官方文件上
请注意:
如果未为意图过滤器指定方案,则忽略所有其他URI属性
因此,您必须添加scheme和host
我想我找到了解决办法。至少,它现在对Dropbox有效
<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:mimeType="application/*"/>
<data android:pathPattern=".*\\.etxt" />
</intent-filter>
这已经是很久以前的事了,但我仍然没有一个合适的解决办法。下面答案中的解决方案在Dropbox中工作,但不会在Google mail或任何文件管理器中打开应用程序。是的,路径模式是正确的 我只尝试了mimeType text/*,没有其他选择。除非将文件命名为扩展名为*.txt,否则这将不起作用。我不能这样做,因为在Windows中有一个对应项,它为文件注册*.etxt 然后我尝试了一个附加的方案内容。如果我选择一个通用的mimeType,这对谷歌邮件有效,但如果用户点击状态栏中的新邮件图标,它将提供该应用程序。所以它太笼统了
总之,我没有找到解决这个问题的方法。这似乎取决于文件管理器和邮件程序形成意图的方式,这是不可预测的。我想,这只是Android系统中的一个遗漏。我应该补充一点,我用Dropbox进行了测试。点击那里的apk文件,可以看到我的程序和软件包安装程序。在任何其他文件管理器中可能都是一样的。请查看我的答案,如果它有效,请告诉我否,它仍然打开任何内容。可能是mimeType太普通了?是的,mime类型说打开所有内容,但pathPattern应该限制。您是否可以尝试从筛选器中删除mimeType,只使用pathPattern。但是为什么使用.etxt?您的文件以.etxt结尾,或者可能是.txt?是的,对于加密文本,文件以etxt结尾。这是加密记事本使用的文件格式。删除mime类型只会停止要匹配的筛选器。什么都没有打开。我不知道这是否允许,但我很感兴趣,如果这将工作