2012-11-23 23 views
7

Stavo modificando la mia app per Android e lo stavo provando sul dispositivo reale (Esegui applicazione in eclissi) e tutto funzionava bene. Così, quando sono stato soddisfatto dei miei cambiamenti, ho aperto il manifesto al fine di modificare la versione per rilasciarlo, ma senza modifiche manifesto è verificato un errore alla riga:Android: strano errore in Manifesto

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

l'errore è:

Permission is only granted to system apps 

Com'è possibile? Ho creato la mia applicazione più volte utilizzando questa linea.

risposta

18

Grazie a tutti. Ho risolto lo strano problema con

Project > Clean 

Ora tutto funziona di nuovo bene!

+2

Non invitare questa risposta: non ha nulla a che fare con il problema reale, ovvero ** questa autorizzazione NON è DISPONIBILE per le applicazioni di terze parti **. Nulla di ciò che uno sviluppatore può fare su un dispositivo sicuro cambierà questo fatto. –

+0

Questo risponde alla domanda su come farlo compilare di nuovo. AFAIK INSTALL_PACKAGES è un'autorizzazione signatureOrSystem, quindi se l'app viene aggiunta all'immagine di sistema che il dispositivo è dotato di ROM dovrebbe funzionare, quindi le versioni successive firmate con la stessa chiave dovrebbero ottenere l'autorizzazione anche se installate come aggiornamenti. –

2

non è possibile installare i pacchetti da soli, non chiedere nemmeno a tale proposito.

uso Intent a tal fine:

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); 

se si stesse utilizzando Eclipse, molto probabilmente ha usato vecchia/versione non aggiornata del Manifesto, e quando lo si apre, sono stati ricaricati i cambiamenti e ha portato la messaggio di errore. basta rimuovere il permesso offensivo e usare Intenti.

+1

Ho bisogno di installare un nuovo apk dalla mia app. Uso questo metodo per diversi mesi e non ho riscontrato alcun problema. Ma oggi manifest mostro il mio errore, senza alcun cambiamento! – GVillani82

+0

Android.permission.INSTALL_PACKAGES indica che la tua app è in grado di installare altre app, ma poiché questa autorizzazione può essere fornita solo alle app di sistema, la tua app non è applicabile. Ecco alcune ulteriori informazioni: http://stackoverflow.com/questions/3476600/why-are-thes-permissions-being-refused –

+2

@ Joseph82 potresti aver usato le versioni precedenti di SDK, ma quella attuale considera l'autorizzazione 'INSTALL_PACKAGE' come pericoloso e aggiunto alla classe "Sistema o Firmato".Ciò significa che le applicazioni utente ** non possono ** usare questa autorizzazione, a meno che l'applicazione sia installata in/system/app o firmata con il certificato del produttore – lenik

2

La pulizia funzionerà se è già stato modificato nelle preferenze dei pelucchi. Altrimenti controlla la soluzione qui sotto.

Permission is only granted to system app

Si dice per modificare le impostazioni Lint

In Eclipse:

Finestra -> Preferenze -> Android -> Checking Lint errore.

Nell'elenco trovare una voce con ID = ProtectedPermission. Imposta la gravità su qualcosa di inferiore a Errore. In questo modo puoi ancora compilare il progetto usando Eclipse.

In Android Studio:

File -> Settings -> Inspections 

Sotto Android Lint, individuare Using system app permission. Deseleziona la casella di controllo o scegli un livello di gravità inferiore a Errore.