【发布时间】:2019-06-04 10:59:57
【问题描述】:
我尝试通过 Android 联系人应用程序中的共享功能在我的应用程序中接收多个联系人,但我只收到第一个联系人,我从未收到 action 和 ACTION_SEND_MULTIPLE。
我以https://developer.android.com/training/sharing/receive 为灵感。
AndroidManifest:
<activity android:name=".ShareActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/x-vcard" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/x-vcard" />
</intent-filter>
</activity>
分享活动:
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
// My code always pass here because action is always equals to ACTION_SEND even with several contacts selectionned
if ("text/x-vcard".equals(type)) {
handleSendContact(intent);
}
} else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
if ("text/x-vcard".equals(type)) {
handleSendMultiContact(intent);
}
}
private void handleSendContact(Intent intent) {
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
// use uri to get lookupkey...
}
private void handleSendMultiContact(Intent intent) {
ArrayList<Uri> contactUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
for (Uri uri : contactUris) {
// use uri to get lookupkey...
}
}
共享一个联系人,一切正常,但是当我选择两个或多个联系人时,我收到的操作仍然是ACTION_SEND 而不是ACTION_SEND_MULTIPLE,我只收到第一个选择的联系人。我的目标是接收在 Android 联系人应用程序中选择的所有联系人。
【问题讨论】:
标签: android android-intent android-contacts intentfilter vcf-vcard