我能够根据tutorials on the Android developer site使用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>
但即使文件传输完成,我的接收活动也永远不会被调用。如何在我的应用程序中接收文件?
答案 0 :(得分:0)
来自Receiving Files from Another Device:
注意:对于Android Beam文件传输,如果第一个传入文件的MIME类型为“audio / *”,“image / *”或“video /”,则会在
ACTION_VIEW
意图中收到内容URI *“,表示该文件与媒体相关。
由于<data ... />
过滤器的处理方式(请参阅Data Test和Data Element),您的意图过滤器会转换为
因此它必须匹配任何MIME类型和数据元素中给出的任何URI。
因此,您的意图过滤器永远不会匹配,“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>
或
<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>