2012-12-20 65 views
2

正在關注this discussion,我已經使用我從製造商處收到的特定設備的專有平臺證書籤署了系統應用程序。我就簽了,如下所示:使用平臺證書吊銷簽名WRITE_EXTERNAL_STORAGE

java -jar out/host/linux-x86/framework/signapk.jar \ 
    build/target/product/security/platform.x509.pem \ 
    build/target/product/security/platform.pk8 \ 
    Launcher-unsigned.apk \ 
    Launcher-unsigned.apk 
zipalign -f 4 Launcher-signed.apk Launcher.apk 

我的啓動程序具有不同的權限:

<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
[snip] 
<uses-permission 
    android:name="android.permission.SET_PREFERRED_APPLICATIONS" 
    tools:ignore="ProtectedPermissons" /> 

我列入清單:

<manifest [...] 
    android:sharedUserId="android.uid.system" > 

,以前我的應用程序會以書面SD成功 - 卡,但是未能設置首選應用程序(my code similar to this),它現在不再拋出SecurityException,而是寫入SD卡時會拋出一個FileNotFoundException與一個消息e該許可被拒絕。

發生了什麼,我的應用獲得了一些受保護的權限,但失去了一些其他的?

+1

安裝時查看logcat(來自PackageManager iirc)。它會告訴你什麼權限沒有被授予。也許有一些信息。 – zapl

+0

很棒的建議。恐怕,將平臺簽名的應用程序推送到'/ system/app /'中顯示logcat中沒有什麼奇怪的東西。 (按照預期,推送非平臺簽名的應用程序會顯示「不授予權限android.permission.SET_PREFERRED_APPLICATIONS」。) –

回答

4

Ricardo Cerqueira(CyanogenMod的開發者)是這麼樣我通過Google+私下回應:

該系統的用戶,通過設計,不能寫入外部存儲。它實際上是 禁止這樣做的唯一用戶。