4

我想编写与联系人连接的应用程序。

设想 :

  1. 输入电话联系人
  2. 我们选择联系项目在此处输入图像描述

  3. 我的应用程序的图标应该出现在 QuickAction 对话框中。

  4. 我单击我的应用程序图标,应用程序从联系人记录中的数据开始。

我必须添加到 AndroidManifest 中才能做到这一点?

4

2 回答 2

4

只有当您的应用在用户设备上的唯一应用中能够处理所需类型的内容时,这种行为才是可能的。例如,如果您想使用“发送短信”或“拨打电话”的内容类型 - 您的应用很可能不是设备上唯一可以处理此类操作的应用(还有股票电话拨号器和短信应用)。

无论如何,您始终可以将您的应用程序添加到当用户单击该快速操作时将出现的应用程序列表。它看起来像这样:

内容类型的应用程序列表

为此,您需要:

  • 在您的清单文件中指定您的应用程序能够处理所需的操作,例如“发送短信”。为此,您需要向您的活动添加意图过滤器,在这种情况下您希望被调用:

    <intent-filter>
        <action android:name="android.intent.action.SENDTO" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="sms" />
        <data android:scheme="smsto" />
    </intent-filter>
    
  • 在您的目标活动中添加代码,以处理所需的内容类型。在您的目标 ActivityonCreate()方法中,或onNewIntent()从调用 Intent 的方法查询数据字符串参数。这是一些示例代码来演示一般想法:

    public class MyActivity extends Avtivity {
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        String dataStr = intent.getDataString();
        // do some processing with dataStr 
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Intent callIntent = getIntent();
        String dataStr = callIntent.getDataString();
        // do some processing with dataStr 
    }
    }
    
于 2012-09-12T09:12:40.500 回答
4

为您的应用添加此意图过滤器,使其对所有联系人可见。

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

更改 mimetype,以便只有具有特定数据的联系人才有您的活动。

例如,如果您希望您的活动仅显示给使用电子邮件的联系人,则将 mimetype 更改为vnd.android.cursor.item/email_v2. 您可以从DataColumns的子类中获取 mimetype 名称

于 2012-09-12T08:48:29.573 回答