내 보낸 서비스에는 권한이 필요하지 않습니다. 무슨 의미입니까?


143

AIDL을 통해 다른 응용 프로그램에 바인딩 된 서비스를 만들고 다음과 같이 매니페스트에 추가합니다.

<service android:name=".MyService">
    <intent-filter>
        <action android:name="org.example.android.myservicedemo.IService" />
    </intent-filter>
</service>

여기서 IService는 AIDL 인터페이스입니다.

이런 식으로 Eclipse는 Exported service does not require permission 이라는 경고 메시지를 표시합니다 . 를 제거하면 intent-filter경고가 사라지지만 분명히 응용 프로그램이 서비스에 바인딩 할 수 없습니다.

이 경고는 무엇을 의미합니까?


31
그것은 사용자가 자신의 휴대 전화에 가지고있는 다른 (임의의) 응용 프로그램이 사용자에게 바인딩되어 ServiceAIDL 인터페이스를 통해 노출되는 모든 방법을 호출 할 수 있음을 의미합니다 .
Jens

25
AndroidManifest.xml에 새 <permission> 을 작성하고 해당 이름을 선언 의 android:permission속성으로 사용하십시오 <service>. 아니면 경고를 무시하십시오-서비스는 무엇을하려고합니까? 당신이 "내부"서비스를 유지와 함께 벌금을 경우 그것은 단지 세트에 훨씬 쉽게 android:exported="false"<service>
옌스

3
그런 다음 경고를 무시하거나 <permission>을 추가하고, 동일한 인증서로 서명 된 모든 자체 응용 프로그램 인 경우 "서명"을 사용하거나 그렇지 않으면 "일반"으로 이동하십시오.
Jens

3
이미 (릴리스) 인증서를 사용하여 응용 프로그램에 서명하고 있습니다. 서명 보호는 권한을 요청하는 응용 프로그램이 권한을 정의한 응용 프로그램과 동일한 서명인지 확인합니다.
Jens

2
@Jens 감사합니다 ... 그것은 나를 도왔습니다 .... btw 당신은 당신의 의견을 답변으로 추가 할 수 있습니다. enzom83이 받아들이도록하십시오.
Vijay C

답변:


128

SDK 를 버전 20으로 업데이트 할 때도 같은 문제가있었습니다 . android : exported 속성을 추가하여 제거했습니다 android:exported="false".

<service android:name=".MyService"
    android:exported="false">
    <intent-filter>
        <action android:name="org.example.android.myservicedemo.IService" />
    </intent-filter>
</service>

문서를 참조하십시오


56

활동 사용을 자신의 애플리케이션으로 제한하려면 exported=false활동의 매니페스트 문에 추가 해야합니다.

다른 응용 프로그램에서 명시 적으로 클래스 이름을 사용하거나 데이터 유형 또는 작업에 의도를 사용하여 더 잘 사용하도록하려면 다음 두 가지 중에서 선택할 수 있습니다.

  • 권한을 사용하여 해당 응용 프로그램을 제한
  • 모든 애플리케이션이이를 사용하도록 허용하면 tools:ignore="ExportedActivity"활동의 매니페스트 문에 추가 할 수 있습니다 .

-

의 서비스 tools:ignore="ExportedService"및 콘텐츠 제공 업체에 동일한 추론이 적용됩니다 tools:ignore="ExportedContentProvider".


8
이것은 나를 위해 일했다, 감사합니다 !! 그러나 매니페스트 파일 맨 위에 xmlns 선언 을 추가 해야 합니다.xmlns:tools="http://schemas.android.com/tools"
Luis A. Florit

감사합니다. Eclipse에서 자동으로 추가되었습니다. 그것은 다른 IDE 사용자를위한 훌륭한 보완책입니다.
Snicolas

Eclipse 4.2.1을 사용하는데 추가하지 않고 오류가 발생합니다 (적어도 기본 구성에서는?). 그것은 단지 :라고 말하고 The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound이것을 고칠 선택은 없습니다.
Luis A. Florit

tools : foo = bar 문을 제거하면 추가됩니다. 오류 / 경고가 표시되면 마우스 오른쪽 버튼을 클릭하고 빠른 수정을 사용하여 도구 설명을 추가하십시오.
Snicolas

1
특별한 경우는 SyncService이며, 내 보내야하지만 시스템에서 사용하기를 원합니다. SyncService 또는 AuthenticatorService의 경우 android : permission = "signature"를 추가하십시오
Entreco

4

으로 옌스는 , "그것은 사용자가 그들이 그 당신의 AIDL 인터페이스를 통해 노출되어 기쁘게 어떤 방법 당신의 서비스 및 호출에 바인딩 할 수 있습니다 자신의 전화에 다른 (임의) 응용 프로그램을 의미한다"고 말했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.