Android 从intent中提取所有数据,无需特定索引或字符串键

Android 从intent中提取所有数据,无需特定索引或字符串键,android,android-intent,Android,Android Intent,我试图从其他应用程序共享按钮的意图中提取数据。不管是文本还是更复杂的数据。例如,我想将联系人应用程序共享的数据提取到我的应用程序中,而不知道Android联系人应用程序使用的键 有没有循环或迭代Intent的方法,我尝试使用for循环并遍历Intent.getExtras(n),但它给我的是空值。您可以启用调试器,在指令上设置断点,然后查看Intent extra在指定时间包含什么 或者你按照你说的做,循环直到得到一个NullPointerException Bundle extras = in

我试图从其他应用程序共享按钮的意图中提取数据。不管是文本还是更复杂的数据。例如,我想将联系人应用程序共享的数据提取到我的应用程序中,而不知道Android联系人应用程序使用的键


有没有循环或迭代Intent的方法,我尝试使用
for
循环并遍历
Intent.getExtras(n)
,但它给我的是空值。

您可以启用调试器,在指令上设置断点,然后查看Intent extra在指定时间包含什么

或者你按照你说的做,循环直到得到一个NullPointerException

Bundle extras = intent.getExtras();
if (extras != null){
   Log.d("EXTRAS", extras.toString());
}
我已经更新了示例,以便更容易理解

尝试以下方法:

getIntent().getExtras().get("android.intent.extra.STREAM")
getIntent().getClipData() 
在我的设备上,这些对象是:

getIntent().getExtras().get("android.intent.extra.STREAM") = {android.net.Uri$HierarchicalUri@830027572808}"content://com.android.contacts/contacts/as_vcard/2574i5f5fc0900f5c945c"

getIntent().getClipData() = {android.content.ClipData@830027557696}"ClipData { text/x-vcard {U:content://com.android.contacts/contacts/as_vcard/2574i5f5fc0900f5c945c} }"

如果你得到相似的东西,这就是你的联系人。如何从这个uri中提取数据是另一个问题。

这是我尝试的第一件事,但我的调试器在emulator上启动应用程序时失败。我正在使用Intellij IDE。我仍然无法从我的活动中获取共享联系人数据的示例。仍然获取空值。对于记录,mime类型为text/x-vcard。我只想从中提取姓名和电话号码。