2012-02-15 1 views
35

Android의 많은 기능을 사용하려면 매니페스트에 사용 권한을 설정해야합니다. 그런 다음이 값은 마켓에서 어떤 장치를 볼 것인지를 결정합니다. 그러나 기능이 선택 사항 인 경우 수행해야하는 작업 ... 여러 장치에서 실행되도록 만들 수 있지만 몇 가지 경우에만 권한이 필요합니까?앱이 모든 기기에 표시되고 일부 기기에서 선택 기능을 사용하도록하는 선택적 권한?

예 : 여러 기능과 많은 양의 콘텐츠가있는 앱을 예로 들어 회사에 전화 할 수있는 버튼을 제공한다고 가정 해 보겠습니다. 숫자를 적어 두거나 전화 앱에 복사하여 붙여 넣는 것과는 대조적으로 편리한 기능입니다. 그러나 필수적인 것은 아닙니다.

해당 기능을 사용하고 전화 권한이 앱에 추가되면 휴대 전화에 모두 좋고 좋지만 태블릿에는 마켓에 앱이 표시되지 않습니다.

이 문제의 일반적인 해결책은 무엇입니까?

여러 가지 앱이 서로 다른 권한으로 만들 수 있지만 그 방법에는 문제가 있습니다 (추가 개발 시간, 유지 관리의 일관성 유지, 리뷰 및 등급이 여러 앱으로 분할 됨, 여러 가지 유형의 선택 사항이있는 경우) 각 조합에 대해 다른 앱보다 사용 권한이 필요할 수 있음).

앱이 프로그래밍 방식으로 기능을 사용할 수 있는지 확인하고 기기에 따라 사용 또는 사용 중지 할 수 있습니다. 이 문제는 앱에 권한이없는 경우 해당 기능을 사용하려고 시도하면 충돌이 발생하며 권한이있는 경우 일부 기기에서 앱을 찾을 수 없다는 것입니다. 시장.

경우에 따라 앱에서 불필요한 기능을 완전히 제거하여 문제를 피할 수 있습니다. 이 기능은 큰 솔루션이 아닙니다. 기능을 지원하는 장치에서 "가지고 있어야합니다."

예, 알고 있습니다. Is it possible to have "optional" permissions in Android?과 (와) 비슷한 질문입니다. 나는 새로운 정보와 사람들이 발견 한 다른 해결책에 대해 기대하고있다. 만약이 문제에 대한 해결책이 있다면? 위에 나열된 것 외의 다른 접근 방법이 있습니까?

답변

73

이 문제의 일반적인 해결책은 무엇입니까?

해당 특정 문제의 경우 <uses-feature android:name="android.hardware.telephony" android:required="false"/>을 매니페스트에 추가하여 this feature is optional임을 나타냅니다. 그런 다음 PackageManagerhasSystemFeature()을 사용하여 런타임에 장치에 필수 기능이 없는지 확인할 수 있습니다.

+3

따라서 사용 권한을 선택적으로 지정할 수는 없지만 많은 경우 use-feature를 추가 할 수 있으며 선택적으로 지정할 수 있으며 Market의 필터링 정보 소스입니다. 우수한! 당신이 제공 한 링크를 읽은 후 모두 감사합니다. –

+0

@ChadSchultz : 귀하의 분석은 스포트 온입니다. 나는 내가 연결 한 자료가 현재 위치보다 조금 더 중요하다고 생각한다. :-( – CommonsWare

+3

기능이 있는지 알아 보는 사람들은 http://stackoverflow.com/a/ 5264328/693752 – Snicolas

관련 문제