본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] intent data filter - android:ssp xml attribute.

by 돼지왕 왕돼지 2015. 12. 16.
반응형

 [android] intent data filter - android:ssp xml attribute.


adddatascheme, adddataschemespecificpart, Android, android:ssp, android:ssppattern, android:sspprefix, BR, broadcast receiver, intent-filter, mailto, PatternMatcher, PATTERN_LITERAL, sdk 19, ssppattern, sspprefix, xml, [android] intent data filter - android:ssp xml attribute., 카카오톡


https://chris.orr.me.uk/android-ssp-data-intent-filter

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






반응형

댓글