使用自定义联系人字段执行某些操作

Ant*_*nko 8 android contacts

我为我的联系人添加了自定义字段.它包括:

<ContactsSource xmlns:android="http://schemas.android.com/apk/res/android">
 <ContactsDataKind
  android:icon="@drawable/ic_launcher"
  android:mimeType="vnd.android.cursor.item/vnd.com.mob.my_new.profile"
  android:summaryColumn="data2"
  android:detailColumn="data3"
  android:detailSocialSummary="true" />
Run Code Online (Sandbox Code Playgroud)

目前.当用户在Android Contacs中选择此字段时,我想执行一些操作(例如 - 启动活动).我该如何实现呢?(它将类似于facebook自定义字段 - 显示个人资料页面)

Ant*_*nko 15

我找到了答案.我们可以通过以下方式实现这样的功能:1)创建新类型的联系人字段(参见答案末尾的链接);

2)创建一个Activity,它将执行此操作:

if (getIntent().getData() != null) {
        Cursor cursor = managedQuery(getIntent().getData(), null, null, null, null);
        if (cursor.moveToNext()) {
            String username = cursor.getString(cursor.getColumnIndex("DATA1"));
            TextView tv = (TextView) findViewById(R.id.profiletext);
            tv.setText("This is the profile for " + username);
        }
    } else {
        // How did we get here without data?
        finish();
    }
Run Code Online (Sandbox Code Playgroud)

3)在Manifest.xml中为Activity添加特殊意图:

<activity android:name=".ProfileActivity"
                android:label="Profile">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="vnd.android.cursor.item/vnd.org.c99.SyncProviderDemo.profile" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

答案(和完整的教程)在这里找到.