Какое намерение связано с "Просмотр рабочего адреса" в Контактах / Карточке контакта?
Я хотел бы зарегистрировать фильтр намерений, чтобы действие "Просмотр рабочего адреса" в приложении "Люди" могло запустить мое приложение, но что это за намерение?
1 ответ
После целого дня поиска в исходном коде контактов я нашел следующее решение:
- зайдите в Google market и установите "Intent Intercept"
- захватить данные. В этом случае это выглядит так:
Действие: android.intent.action.VIEW
Данные: контент://com.android.contacts/data/1425
Uri: содержание://com.android.contacts/data/1425
Тип: ноль
3 действия соответствуют этой цели:
com.telenav.app.android.sprint
com.google.android.apps.maps
uk.co.ashtonbrsc.android.intentintercept
Затем я пошел к документации, чтобы узнать, что я должен был получить...
http://developer.android.com/guide/appendix/g-app-intents.html
Как вы можете себе представить, я был шокирован, увидев, что используется "гео" схема. (что объясняет, почему я не смог найти географический URI в исходном коде).
РЕДАКТИРОВАТЬ: я пытаюсь реализовать намеренный фильтр приложения; это не так легко взломать...
это работает - но оно также фиксирует иные намерения, кроме "Просмотр рабочего адреса" (что не очень хорошо)
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" android:scheme="content" android:host="com.android.contacts" />
</intent-filter>
РЕДАКТИРОВАТЬ 2: это лучший фильтр намерений, который я могу придумать для этого сценария
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/*" android:host="com.android.contacts" />
</intent-filter>
РЕДАКТИРОВАТЬ 3: я могу сделать лучше... это точный намеренный фильтр для использования
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/*" android:host="com.android.contacts" android:pathPrefix="/data" android:scheme="content"/>
</intent-filter>