我正在尝试从来自其他应用程序的 SHARE BUTTON 的 Intent 中提取数据。不管是文本还是更复杂的数据。例如,我想在不知道 Android 联系人应用程序使用的密钥的情况下提取从联系人应用程序共享的数据到我的应用程序。
是否有循环或迭代 Intent 的方法,我尝试使用for
循环并通过intent.getExtras(n)
但它给了我空值。
我正在尝试从来自其他应用程序的 SHARE BUTTON 的 Intent 中提取数据。不管是文本还是更复杂的数据。例如,我想在不知道 Android 联系人应用程序使用的密钥的情况下提取从联系人应用程序共享的数据到我的应用程序。
是否有循环或迭代 Intent 的方法,我尝试使用for
循环并通过intent.getExtras(n)
但它给了我空值。
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,所以这是你的联系人。如何从这个 uri 中提取数据是另一个问题。
您可以启用调试器,在指令上设置断点,然后查看 Intent extra 在指定时间包含的内容。
或者你按照你说的做,然后循环,直到你得到一个 NullPointerException。