Android 使颤振应用程序接受传入的意图

Android 使颤振应用程序接受传入的意图,android,flutter,android-intent,android-contacts,Android,Flutter,Android Intent,Android Contacts,这些文档解释了如何让Flutter应用程序接受传入的Android意图,并给出了一个接受共享意图的代码示例。我复制了它,效果很好 但我现在正试图让我的应用程序接受其他类型的意图,特别是编辑联系人的意图,这样当我使用默认的手机应用程序并单击联系人时,我的应用程序被建议完成操作 在谷歌搜索GitHub后,我尝试了所有可能的组合,但没有任何东西能让它起作用。给出一些: <intent-filter> <action android:name="android.intent.a

这些文档解释了如何让Flutter应用程序接受传入的Android意图,并给出了一个接受共享意图的代码示例。我复制了它,效果很好

但我现在正试图让我的应用程序接受其他类型的意图,特别是编辑联系人的意图,这样当我使用默认的手机应用程序并单击联系人时,我的应用程序被建议完成操作

在谷歌搜索GitHub后,我尝试了所有可能的组合,但没有任何东西能让它起作用。给出一些:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="vnd.android.cursor.item/person"/>
    <data android:mimeType="vnd.android.cursor.item/contact"/>
    <data android:mimeType="vnd.android.cursor.item/raw_contact"/>
    <data android:mimeType="vnd.android.cursor.item/phone"/>
    <data android:mimeType="vnd.android.cursor.item/phone_v2"/>
</intent-filter>

<intent-filter>
    <action android:name="android.intent.action.GET_CONTENT"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts"/>
    <data android:mimeType="vnd.android.cursor.item/contact" android:host="contacts"/>
    <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="contacts"/>
</intent-filter>

<intent-filter >
    <action android:name="android.intent.action.EDIT" />
    <category android:name="android.intent.category.DEFAULT" />
    <data
        android:host="contacts"
        android:mimeType="vnd.android.cursor.item/person" />
    <data
        android:host="com.android.contacts"
        android:mimeType="vnd.android.cursor.item/contact" />
    <data
        android:host="com.android.contacts"
        android:mimeType="vnd.android.cursor.item/raw_contact" />
</intent-filter>

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.APP_CONTACT"/>
</intent-filter>

etc.

我做错了什么?

这取决于您使用的联系人应用程序

每个设备都可以附带制造商特定的联系人应用程序(如三星联系人), 谷歌提供的应用程序(谷歌联系人), 服务提供商可以安装自己的联系人应用程序, 或者用户可能正在使用从Google Play安装的应用程序(例如Contacts+)

每个这样的应用程序可以选择通过其他应用程序可能捕获的意图启动编辑器,或者只启动自己的内置编辑器而不涉及意图系统


如果有被捕获的意图,您可以通过检查LogCat,过滤到标签
ActivityManager
,找到它是什么,它显示了设备上抛出的所有意图,因此您可以研究它,找出需要捕获的意图细节。

对于后代,以marmor的上述回答为基础,展示具体步骤:

$ adb logcat | grep ActivityTaskManager
所以我所要做的就是将它添加到我的
AndroidManifest.xml

<intent-filter>
  <action android:name="android.intent.action.INSERT_OR_EDIT"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeType="vnd.android.cursor.item/contact"/>
</intent-filter>


您好,这可能会对您有所帮助,请查看以下URL:哇!明亮的工作得很好!
<intent-filter>
  <action android:name="android.intent.action.INSERT_OR_EDIT"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeType="vnd.android.cursor.item/contact"/>
</intent-filter>