Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序的注册文件类型无法正常工作_Android - Fatal编程技术网

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类型只会停止要匹配的筛选器。什么都没有打开。我不知道这是否允许,但我很感兴趣,如果这将工作