2013-12-12 3 views
1

로 시작하거나 결합하기 위해 여러 권한을 필요로하는 방법, 안드로이드 매니페스트 파일은 Service 다음 구문을 가질 수는 <a href="http://developer.android.com/guide/topics/manifest/service-element.html" rel="nofollow noreferrer">docs</a>에 따르면 서비스

<service android:enabled=["true" | "false"] 
     android:exported=["true" | "false"] 
     android:icon="drawable resource" 
     android:isolatedProcess=["true" | "false"] 
     android:label="string resource" 
     android:name="string" 
     android:permission="string" 
     android:process="string" > 
    . . . 
</service> 

특히 지정의 권한 속성 :

서비스를 시작하거나 바인딩하기 위해 엔티티가 가져야하는 권한의 이름입니다.

하지만 내 서비스를 실행하는 엔티티에 대해 둘 이상의 권한을 요청할 수없는 것 같습니다. 그게 사실인가요? 어쨌든 이것을 피할 수 있습니까? 저자는 말한다 곳 여기서 유래에

은 내가 찾은 가장 가까운 this answer이었다

안드로이드 서비스가 여러 권한을 가질 수 있지만, 권한이없는 서비스 수준, 응용 프로그램 수준에서 부여 이다.

그러나 그는 내가 찾고있는 것이 아닌 <uses-permission> 속성을 설명합니다. Another answer 내 희망을 더욱 줄입니다. 이것이 실제로 불가능한 것 같습니다.

이 경우, 제가 생각하는 대안은 내가 필요로하는 각각의 권한에 대해 하나의 서비스를 가지고 있으며, 모든 일을 담당하는 실제 서비스에 대한 전달자로 모든 것을 작동시키는 것입니다. 더 좋은 생각이야?

답변

3

정말 그런가요?

매니페스트의 자동 보호 측면에서 예. 그것은 99.9 %의 경우입니다.

어쨌든 이것을 피할 수 있습니까?

like checkCallingPermission()을 사용하여 Java 코드의 다른 권한을 확인하십시오.

그러나 그는 내가 찾고있는 것이 아닌 속성을 설명하려고합니다.

수정.

내가 택하는 각 권한에 대해 하나의 서비스를 제공하고 작업을 수행하는 실제 서비스에 대한 전달자로 모든 작업을 수행하는 것입니다. 당신은 논리적 OR 발신자가 당신의 질문에이 시점까지 허락 X 또는 권한 Y. 업을 가지고있는 권한을가하려고하는 경우에만 의미가 것

, 나는 것으로 가정했다 당신은 허가에 논리적 인 AND를 원했습니다 (호출자는 허가 X 의 허가 Y를 보유해야합니다).

나는 들어오는 권한에 대한 논리 OR이 유용 할 것 같은 시나리오를 생각할 필요가 없습니다. 즉, startService()과 함께 명령 패턴을 사용하고 "실제"서비스를 내보낼 수 없으며 내 보낸 서비스에서 명령을 전달한 후 stopSelf()으로 전화를 걸면 해결 방법이 효과가 있다고합니다. 당신의 비전이 바인딩 패턴으로이 프록시 접근법을 사용하는 것이라면, bindService()을 사용하여 $DEITY이 당신의 영혼에 자비를 가질 수 있습니다. 왜냐하면 당신은 그것을 필요로 할 것입니다.

관련 문제