2011-11-28 4 views
1

일부 Android 권한 조사를 수행 중이며 AndroidManifest.xml 파일에 따라 - 승인으로 WRITE_EXTERNAL_STORAGE만을 선언 한 응용 프로그램을 실행했습니다. Android 마켓에서도이 사실을보고합니다. aapt 도구를 사용하여 사용 권한을 덤프하면 하나의 사용 권한 만보고됩니다.다른 사용 권한을보고하는 PackageManager 및 AndroidManifest.xml

그러나 코드에서 다음을 수행, 안드로이드 장치 (또는 에뮬레이터)에서 실행 :

PackageManager pm = getPackageManager(); 
List<PackageInfo> pkgList = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS | PackageManager.GET_SIGNATURES); 

... 

PackageInfo p = pkgList.get(i); // where i is the index of the apk in question 
String[] perms = p.requestedPermissions; 

나는이 APK, READ_PHONE_STATE 및 매니페스트에서 하나 WRITE_EXTERNAL_STORAGE 2 권한을 얻을. '앱 관리'화면에서 자세한 내용을 선택하면 READ_PHONE_STATE 권한이 추가로 표시됩니다.

Android Manifest에서 필요하지 않은 권한이 'implied'(코드, feature use 등) 할 수있는 경우가 있습니까? 또는 다른 방법으로 말하면, aapt은 하나의 사용 권한 집합을 반환하고 getPackageManager().getPackageInfo() API는 다른 집합을 반환하는 이유는 무엇입니까?

편집 : "더 나은"용어로 검색

내가 찾고 있던 해답을 발견 : 한마디로 Android permissions: Phone Calls: read phone state and identity

의 SDK의 이전 버전으로 컴파일 된 APK 무료로 일부 권한을 상속 한을 ...

답변

1

내가 아는 한 항상 매니페스트에 사용 권한을 명시 적으로 설정해야합니다.

응용 프로그램이 권한으로 보호 된 기능에 액세스해야하는 경우에는 매니페스트의 요소에 대한 권한이 필요하다는 것을 선언해야합니다. 그런 다음 응용 프로그램이 장치에 설치되면 설치 프로그램은 응용 프로그램의 인증서에 서명 한 기관을 확인하고 경우에 따라 사용자에게 요청하여 요청 된 권한을 부여할지 여부를 결정합니다. 권한이 부여되면 응용 프로그램은 보호 된 기능을 사용할 수 있습니다. 그렇지 않은 경우 해당 기능에 액세스하려는 시도는 사용자에게 알리지 않고 실패하게됩니다.

source

당신은 내가 믿는보고있는 차이 권한에 protectionLevel 속성 때문이다

. "일반"으로 설정된 권한은 사용자가 확인하지 않아도되므로 세부 정보 섹션에 표시됩니다.