[Intro]
제가 이전에 세미나에서 발표 했던 내용과도 관련이 있는 내용이긴 합니다.
Activity를 안전하게 보호하기 위한 방법 중에서,
<activity> 태그에 있는 exported 속성을 false로 만들어서
다른 어플리케이션에서 접근 할 수 없게 만들 수 있었습니다.
그런데 exported ="false"속성은 다른 어플리케이션에서 전혀 보이지 않게 숨기는 속성이기 때문에,
재사용을 할 수 없다는, 다소 Activity 철학과는 살짝 거리가 있는 속성이기도 합니다.
뭐... 그래도 재사용 필요없는 Activity에겐 유용한 속성이긴 하지요.
[exported="false" 를 쓰면 안되는 상황이 있다고?]
예... 그렇습니다. 모든 상황에서 사용 가능한건 아닙니다.
원래 오늘 별 내용 없습니다. 간단한 메모 수준의 포스팅이죠.
exported="false" 속성을 사용하면 안되는 상황이 있는데,
바로 MAIN/LAUNCHER Activity에는 사용하면 절대 안됩니다.
모든 Activity들을 안전하게 만든다고 모두 exported="false" 속성을 주어서는 안됩니다.
MAIN/LAUNCHER Activity에 exported="false" 속성을 주면
다음과 같은 exception이 발생합니다.
ERROR/Rosie(255):
Launcher does not have the permission to launch Intent
{ action=android.intent.action.MAIN categories={android.intent.category.LAUNCHER}
flags=0x10200000 comp={kr.vizpei.blog/kr.vizpei.blog.TestActivity} }.
Make sure to create a MAIN intent-filter for the corresponding activity or use the exported attribute for this activity.
ERROR/Rosie(255):
java.lang.SecurityException: Permission Denial:
starting Intent { action=android.intent.action.MAIN categories=
{android.intent.category.LAUNCHER} flags=0x10200000
comp={kr.vizpei.blog/kr.vizpei.blog.TestActivity} }
from ProcessRecord{43851f00 255:com.htc.launcher/9999} (pid=255, uid=9999)
requires null
먼저 SecurityException이 발생 하고,
exported 속성을 true로 설정해 달라는 메세지가 출력됩니다.
절대로 MAIN/LAUNCHER Activity에 exported="false" 속성을 주지 맙시다!
출처 : http://blog.naver.com/PostList.nhn?blogId=visualc98&categoryNo=0&from=postList
'안드로이드' 카테고리의 다른 글
항상 최상위에 나오는 뷰 만들기2 (팝업 비디오 + Q슬라이드) (0) | 2012.11.13 |
---|---|
Multipart Entity 에서 파일 업로드 간략 정리. (0) | 2012.11.08 |
WebViewClient (0) | 2012.07.12 |
Android WireShark TCP dump (0) | 2012.07.12 |
[WiFi Direct] WiFi Direct in Android 4.0 API Overview (번역) (0) | 2012.05.07 |