Фильтр намерений для обработки адресной печати в Контакте?
Люди, при просмотре контакта вы можете нажать на адрес, чтобы просмотреть этот адрес в приложении карты (например, 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 ответа:
В 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>