Android意图过滤器在下载管理器中查看CSV文件时会收到通知



注册你的应用程序所需的魔法咒语是什么,以通知用户正在试图查看CSV文件,他们已经以前下载管理器下载。我有一个简短的发挥,以下过滤器将愉快地拦截通知产生:Dropbox, Box, Google Drive, Sky Drive, Chrome.....并主动打开文件,但当用户试图通过下载管理器查看文件时,我的应用程序什么也得不到。

        <intent-filter>
            <action android:name="com.my.testImportApp.LAUNCH" />
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.EDIT" />
            <action android:name="android.intent.action.PASTE" />
            <action android:name="android.intent.action.OPEN_DOCUMENT" />
            <action android:name="android.intent.action.GET_CONTENT" />
            <action android:name="android.intent.action.INSERT" />
            <action android:name="android.intent.action.INSERT_OR_EDIT" />
            <action android:name="android.intent.action.SENDTO" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.CATEGORY_BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:scheme="http" />
            <data android:scheme="https" />
            <data android:scheme="ftp" />
            <data android:scheme="file" />
            <data android:scheme="data" />
            <data android:scheme="info" />
            <data android:scheme="data" />
            <data android:scheme="smb" />
            <data android:scheme="nfs" />
            <data android:scheme="android.resource" />
            <data android:mimeType="text/comma-separated-values"/>
            <data android:mimeType="text/csv"/>
            <data android:mimeType="text/plain"/>
        </intent-filter>

经过一段时间的播放,以下内容似乎可以工作:

        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.OPEN_DOCUMENT" />
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.ALTERNATIVE" />
            <data android:scheme="http" />
            <data android:scheme="https" />
            <data android:scheme="ftp" />
            <data android:scheme="file" />
            <data android:scheme="data" />
            <data android:scheme="info" />
            <data android:scheme="data" />
            <data android:scheme="smb" />
            <data android:scheme="nfs" />
            <data android:mimeType="text/comma-separated-values"/>
            <data android:mimeType="text/csv"/>
            <data android:mimeType="text/plain"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.OPEN_DOCUMENT" />
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.ALTERNATIVE" />
            <data android:scheme="http" />
            <data android:scheme="https" />
            <data android:scheme="ftp" />
            <data android:scheme="file" />
            <data android:scheme="data" />
            <data android:scheme="info" />
            <data android:scheme="data" />
            <data android:scheme="smb" />
            <data android:scheme="nfs" />
            <data android:host="*" />
            <data android:pathPattern="/.*\.csv" />
            <data android:pathPattern="/.*\.CSV" />
            <data android:pathPattern="/.*\.txt" />
            <data android:pathPattern="/.*\.text" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.OPEN_DOCUMENT" />
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.ALTERNATIVE" />
            <data android:mimeType="text/comma-separated-values"/>
            <data android:mimeType="text/csv"/>
            <data android:mimeType="text/plain"/>
        </intent-filter>

你不需要真的玩,这里有一个快速的往返找出你需要什么

  1. 为ActivityManager "创建日志:START "
  2. 将你的文件放到Downloads
  3. 打开下载应用程序
  4. 点击打开文件
  5. 检查logcat,你应该发现这样一行:{act=android.intent.action.VIEW dat=content://com.android.providers.downloads.documents/document/2183 typ=text/csv flg=0x3 ...

这意味着你的方案是"content"mime类型是"text/csv"作为一个提示,当你看到这个对话框时让它打开,用新的过滤器设置做一个./gradlew installDebug,当你在清单集中达到过滤条件时,它会立即出现。

这对我有用

   <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <data android:scheme="content" />
            <data android:mimeType="text/*"/>
        </intent-filter>

相关内容

  • 没有找到相关文章

最新更新