use*_*939 6 android nfc intentfilter android-beam nfc-p2p
根据Android开发者网站上的教程,我能够使用NFC发送文件.但是我无法处理接收器部分.
我按照http://developer.android.com/training/beam-files/receive-files.html进行接收,我收到了关于接收器上Beam文件传输成功的通知.当用户点击此通知时,我希望应该启动我的应用.
我的接收活动有以下意图过滤器:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
<data android:scheme="file" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
但即使文件传输完成,我的接收活动也永远不会被调用.如何在我的应用程序中收到该文件?
ACTION_VIEW注意:对于 Android Beam 文件传输,如果第一个传入文件的 MIME 类型为“audio/*”、“image/*”或“video/*”,则您会在 Intent 中收到内容 URI ,表明该文件是媒体相关。
<data ... />由于过滤器的处理方式(请参阅数据测试和数据元素),您的意图过滤器会转换为
因此它必须与数据元素中给出的任何 MIME 类型和任何 URI 相匹配。
因此,您的 Intent 过滤器永远无法匹配,因为“image/*”MIME 类型和“video/*”MIME 类型将生成内容 URI,而不是“file:”URI。因此,跳过 URI 过滤器部分或将过滤后的方案更改为“内容”应该可以解决问题。
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
或者
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
<data android:scheme="content" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1076 次 |
| 最近记录: |