2014-02-19 1 views
3

나는 내가 경고를 암시 적 목적으로 서비스를 시작하면?서비스를 시작하기위한 암시적인 의도를 사용하는 것이 안전하지 않은 이유는 무엇입니까?</p> </blockquote> <p>왜 ... : 안전하지 않습니다 startservice와</p> <blockquote> <p>암시 적 의도 :

편집 :

내가 다른 응용 프로그램을 사용해서는 안 내 자신의 내부 범주를 사용하고 내 서비스가 android:exported="false"를 내보낼 수 없습니다.

+0

충돌로부터 보호하기 위해 ... 다른 앱이 동일한 의도 동작을 허용하는 '서비스'를 가질 수 있습니다 ... –

+0

@GopalRao 편집보기. – dcow

+0

@GopalRao. 애플리케이션 별 카테고리를 사용하는 경우에는 표시되지 않습니다. – dcow

답변

10

Implicit Intents을 사용하면 구성 요소가 지정되지 않았으므로 Android에 의해 구성 요소가 선택됩니다. 이는 Intent-Action입니다.

android:exported="false"을 사용하면 다른 사람이 서비스를 시작할 수 없습니다. 그러나 BroadcastReeciver을 사용하여 Intent-Action을 수신하고 악의적 인 작업을하는 응용 프로그램을 작성하면 어떻게됩니까?

내 응용 프로그램에 서비스를 선언하고 같은 범주/필터/동작을 사용할 때도 마찬가지입니다.

Explicit Intents을 사용하십시오.

+0

언젠가 내 공개 될 내부 카테고리를 사용합니다. – dcow

+0

내 서비스 인 텐트를 선택하는 "악의적 인"응용 프로그램을 추가했는지 상관하지 않습니다. 내 서비스가 시작되면 어떻게할까요? 시스템에 물어볼 수 있습니다. 내 의도에는 중요한 데이터가 없습니다. – dcow

+0

그러면 걱정할 필요가 없습니다. 그건 단지 경고입니다, 당신은 그것을 무시할 수 있습니다 :) –

0

동일한 IntentFilter를 사용하는 서비스가 여러 개있는 경우 시스템에서 어떤 IntentFilter를 시작해야하는지 모르기 때문에 시스템에서 사용자에게 선택하도록 요청하지 않습니다.