2012-11-23 52 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。取消选中复选框或选择低于错误的严重性。