Это то, что я сделал.В файле манифеста я добавил эти фильтры намерений для одного из моих действий
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.myapp.profile" />
</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>
Первый будет транслироваться, когда пользователь нажимает на действие профиля, которое я добавил в свои учетные записи адаптера синхронизации, используя код впример адаптера синхронизации (см. выше)
Второй позволяет вам обрабатывать намерение, которое передается родной адресной книгой, когда пользователь хочет редактировать контакт.Учтите, что в первом случае, поскольку mimetype - это один из ваших syncadapter, ваша деятельность будет вызываться напрямую.Во втором случае будет показан диалог со списком приложений, зарегистрированных для обработки android.intent.action.EDIT для android: mimeType = "vnd.android.cursor.item / person", android: mimeType = "vnd.android.cursor.item / contact "etc
В своей деятельности у меня есть такой метод:
boolean handleIntent(Intent intent) {
String action = intent.getAction();
Uri uri = intent.getData();
if (action.equalsIgnoreCase(Intent.ACTION_VIEW)) {
handleProfileAction(uri); // in this case uri points to ProfileAction Data raw that is one of the Data that your sync adaoter has added in the raw contact
} else if (action.equalsIgnoreCase(Intent.ACTION_EDIT)) {
editYourContact(uri); // in this case the uri points to the Contact containing you raw contact although at least on SonuEricsson Xperia mini when this intent is broadcasted by the context menu "edit contact" command I receive the URI of the raw contact when there is only one.
}
return true;
}