eccezione di protezione durante la chiamata bindAppWidgetId
-
29-09-2019 - |
Domanda
Durante lo sviluppo di un'applicazione di avvio (Homescreen) per Android, sono venuto in un'eccezione di sicurezza che non capisco.
- Quando si chiama il [BindAppWidgetId ()] [1] metodo dal nel mio Launcher Attività, ottengo questa eccezione di sicurezza:
Novembre 08-19: 30: 11,689: ERRORE / AndroidRuntime (6032): java.lang.SecurityException: bindGagetId appWidgetId = 99 = fornitore ComponentInfo {com.android.music / com.android.music.MediaAppWidgetProvider}: User 10034 non ha android.permission.BIND_APPWIDGET.
ho pensato che avevo dimenticato il permesso BIND_APPWIDGET nel mio manifesto, ma è sicuramente lì.
La documentazione API Android afferma questo:
"È necessario l'APPWIDGET_LIST autorizzazione. Questo metodo deve essere usato dal selettore AppWidget ".
Ho provato ad aggiungere l'autorizzazione android.permission.APPWIDGET_LIST, ma non risolve il problema.
Inoltre, ho guardato il manifesto dell'applicazione Impostazioni dalle fonti Android che contiene il codice AppWidgetPickActivity: c'è una linea speciale che chiede alla quota id utente:
"android: sharedUserId =" android.uid.system "
Potrebbe essere collegato al mio problema?
Se qualcuno ha un'idea che sarebbe grande!
Saluti, Laurent
Soluzione
Ho trovato una risposta!
BindAppWidgetId () è volutamente non è disponibile per le applicazioni! (problemi di sicurezza).
"L'android.permission.BIND_APPWIDGET il permesso è un sistema di autorizzazione. si può solo ottenere che il permesso se il vostro pacchetto è installato come sistema pacchetto (installato in / system / app in invece di / dati / app) o firmare app con un certificato che è lo stesso di l'immagine Android. Quindi, fondamentalmente questo significa che è possibile utilizzare solo questa autorizzazione Se anche tu sei il creatore del immagine Android sulla vostra piattaforma / telefono ".
Ecco i link a queste informazioni:
Altri suggerimenti
Una rapida ricerca su Google rivela che android.permission.APPWIDGET_LIST
è un permesso utilizzabile, anche se non è elencato nella documentazione API.