2012-11-23 70 views
7

我正在學習我的android應用程序,並且在真正的設備上嘗試它(在eclipse中運行應用程序),並且所有工作都很好。所以,當我很滿意我的變化,我爲了修改版本釋放它開了清單,但沒有清單的任何更改的行發生錯誤:Android:在清單中的奇怪錯誤

<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 

的錯誤是:

Permission is only granted to system apps 

這怎麼可能?我用這條線多次建立了我的應用程序。

回答

18

感謝所有。我解決了奇怪的問題

Project > Clean 

現在所有的作品都很好!

+2

不要贊成這個答案 - 它與實際問題無關,這是**此權限不適用於第三方應用程序**。開發人員在安全設備上所做的任何事情都不會改變這一事實。 –

+0

這確實回答瞭如何讓它重新編譯的問題。 AFAIK INSTALL_PACKAGES是signatureOrSystem權限,因此只要您的應用程序被添加到系統映像中,該設備就可以與ROM一起工作,那麼使用相同密鑰簽名的後續版本也應該在安裝爲更新時獲得權限。 –

2

你不可以自己安裝軟件包,甚至不要問這個問題。

使用Intent用於這一目的:

Intent installIntent = new Intent(Intent.ACTION_VIEW); 
installIntent.setDataAndType(
    Uri.parse("file://" + context.getFilesDir().getAbsolutePath() + "/" + file_name_to_install), 
    "application/vnd.android.package-archive"); 
startActivity(installIntent); 

如果你使用Eclipse,最有可能是使用了您清單的舊/過時的版本,當你打開它,改變被重新加載,撫養錯誤信息。只是刪除違規許可並使用Intents。

+1

我需要從我的應用程序安裝新的apk。我使用這種方法好幾個月,而且我沒有遇到任何問題。但今天清單顯示我的這個錯誤,沒有任何改變! – GVillani82

+0

android.permission.INSTALL_PACKAGES表示您的應用程序能夠安裝其他應用程序,但由於此權限只能授予系統應用程序,因此您的應用程序不適用。這裏有一些更多的信息:http://stackoverflow.com/questions/3476600/why-are-these-permissions-being-refused –

+2

@ Joseph82你可能已經使用過早期版本的SDK,但是當前的版本考慮'INSTALL_PACKAGE'權限這很危險,並添加到「系統或簽名」課程中。這意味着用戶應用程序**不能**使用此權限,除非應用程序安裝在'/ system/app'中或者使用製造商證書進行簽名 – lenik

2

如果您已經更改了皮棉偏好,清潔將會起作用。否則檢查下面的解決方案。

Permission is only granted to system app

它說,改變你的林特設置

在Eclipse:

窗口 - >首選項 - > Android的 - >皮棉錯誤檢查。

在列表中找到一個條目ID = ProtectedPermission。將嚴重性設置爲低於錯誤的值。這樣您仍然可以使用Eclipse編譯項目。

在Android Studio中:

File -> Settings -> Inspections 

Android Lint,找到Using system app permission。取消選中複選框或選擇低於錯誤的嚴重性。