Фильтр намерений для обработки адресной печати в Контакте?


Люди, при просмотре контакта вы можете нажать на адрес, чтобы просмотреть этот адрес в приложении карты (например, Google Maps или Vzw Navigator). Я хотел бы определить фильтр намерений таким образом, чтобы мое приложение отображалось в списке приложений, которые могут обрабатывать указанное намерение. Есть идеи?

Заранее благодарю.

Из logcat я вижу следующее Из ActivityManager:

Starting activity: 
Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/data/6792 cmp=android/com.android.internal.app.ResolverActivity }

Я попробовал несколько комбинаций фильтров намерений, например:

<intent-filter>
  <action android:name=”android.intent.action.View” />
  <category android:name=”android.intent.category.DEFAULT” />
  <category android:name=”android.intent.category.BROWSABLE” />
  <data android:scheme=”geo” />
</intent-filter>

<intent-filter>
  <action android:name=”android.intent.action.View” />
  <category android:name=”android.intent.category.DEFAULT” />
  <category android:name=”android.intent.category.BROWSABLE” />
  <data android:scheme=”content” android:host=”com.android.contacts” android:pathPattern=”/data/*” />
</intent-filter>
4 2

4 ответа:

В ICS вы должны использовать это:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" /> 
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="geo" />
        </intent-filter>

Полученное намерение должно быть обработано соответствующим образом (по-разному). обратите внимание, что на ICS и с этим intent-фильтром вам не нужно специальное разрешение на чтение контактного адреса.

Решение, предоставляемое Google Developer Relations:

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

Для ранних версий Android я использовал

        <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>

VIEW предполагается, что она должна быть прописной. А твоя-нет.