使用Android Beam发送2个文件并在接收设备

时间:2016-11-16 14:23:40

标签: android nfc mime-types android-beam

我想使用Android Beam将文本文件和图像文件从一个设备发送到另一个设备。

传输完成后,我希望接收设备启动可导入这两个文件的特定应用程序。

这就是我使用NDEF消息开始工作的方式:

private static final String NDEF_DOMAIN_NAME = "my.app.domain";
private static final String NDEF_TYPE_NAME = "mytypename";

NdefRecord cardRecord = NdefRecord.createExternal(
            NDEF_DOMAIN_NAME,
            NDEF_TYPE_NAME,
            textfile.getBytes());

NdefRecord cardImageRecord = NdefRecord.createExternal(
            NDEF_DOMAIN_NAME,
            NDEF_TYPE_NAME,
            base64EncodedImage.getBytes());

NdefMessage ndefMessage = new NdefMessage(new NdefRecord[] { cardRecord, cardImageRecord });
mNfcAdapter.setNdefPushMessage(ndefMessage, activity);

但是,对于整个图像来说,“纯”NFC的传输速度当然要慢得多。所以我必须使用带有2个文件URI的Android Beam:

Uri[] fileUris = new Uri[2];
fileUris[0] = pathToTextFile;
fileUris[1] = pathtoImageFile;
mNfcAdapter.setBeamPushUris(fileUris, activity);

转移工作完全正常,但接收设备在收到文件后不启动任何应用程序。我刚收到传输完成的通知。接收应用程序的清单现在看起来像这样:

<intent-filter>
     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT" />
     <data android:mimeType="text/plain" />
</intent-filter>

这样,当我点击“转移完成” - 通知时,我至少可以选择应用程序。但我想要的是这样的:

<intent-filter>
     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT" />
     <data android:mimeType="application/my-own-mime-type" />
</intent-filter>

这样我的应用程序将是唯一能够处理此mime类型的应用程序。但我无法弄清楚如何在发送设备上设置mime-type。这是偶数还是如何通过Android Beam传输多个文件并打开1个特定应用程序来处理这些文件?

更新

我刚刚在这里阅读SO-question使用Android Beam无法使用自定义mime类型。似乎接收设备查看第一个文件及其文件结束,以决定将哪个mime类型用于ACTION_VIEW意图。 有谁知道是否可以压缩我的所有文件,然后使用自定义文件而不是* .zip?我可以这样创建一个假的mime类型吗?

0 个答案:

没有答案