一直在做一些Android權限研究,並且運行了一個應用程序 - 根據AndroidManifest.xml文件 - 僅聲明WRITE_EXTERNAL_STORAGE
作爲權限。 Android Market僅報告此情況。使用aapt工具轉儲uses-permission,它也只報告一個權限。PackageManager和AndroidManifest.xml報告不同的用途 - 權限
然而,在代碼運行在Android設備(或仿真器)上,執行以下操作:
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;
我得到2個權限此APK,READ_PHONE_STATE
和一個在清單中,WRITE_EXTERNAL_STORAGE
。查看「管理應用程序」屏幕並選擇詳細信息還顯示額外的READ_PHONE_STATE
權限。
是否存在Android Manifest中不需要的權限可以/隱含的情況(在代碼中,由feature use等等)?或換句話說,爲什麼aapt
返回一組權限,並且getPackageManager().getPackageInfo()
API返回另一組?
編輯:
與「越多越好」的字詞進行搜索發現我一直在尋找的答案:Android permissions: Phone Calls: read phone state and identity
總之,隨着SDK的早期版本編譯的APK沒有繼承自由一些權限...