[android] intent data filter - android:ssp xml attribute. |
SDK 19 부터 android:sspPrefix, android:sspPattern 을 사용할 수 있다.
-
예를 들어 내가 관심있는 것은 카카오톡의 설치 혹은 삭제여부인데,
기존과 같은 방식으로 broadcast receiver 를 등록하면 모든 앱에 대해서 받게 된다.
<기존 방식>
<receiver android:name=".PackageReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
-
sspPrefix, sspPattern 을 사용하면 내가 관심있는 카카오톡에 대해서만 broadcast 를 받을 수 있다.
( cf, 카카오톡의 package 이름은 저것이 아닐 수 있다. )
<sspPrefix, sspPattern 사용 방식>
<receiver android:name=".DataClearedReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
<data android:scheme="package"
android:sspPrefix="com.kakao.kakaotalk" />
</intent-filter>
</receiver>
-
broadcast 뿐만 아니라 다른 intent-filter 에도 적용이 물론 가능하다.
<activity android:name=".SupportActivity">
<intent-filter>
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="mailto"
android:sspPattern="support-.*@example.com" />
</intent-filter>
</activity>
-
이 ssp xml 에 매칭되는 코드는 IntentFilter.addDataSchemeSpecificPart 이다.
IntentFilter pkgFilter = new IntentFilter(Intent.ACTION_PACKAGE_REMOVED);
pkgFilter.addDataScheme("package");
pkgFilter.addDataSchemeSpecificPart("com.example.someapp", PatternMatcher.PATTERN_LITERAL);
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
SQLite Bulk Insert 가장 빠른 방법은? (0) | 2015.12.18 |
---|---|
[android] Serialization 을 사용할 때 다음의 예외를 고려하자. (0) | 2015.12.17 |
[android] Activity Configuration Change Simulation. (0) | 2015.12.14 |
[android] Useful ADB commands (0) | 2015.12.12 |
[Android] App Performance Tuning Video (0) | 2015.12.11 |
댓글