Partner sviluppatori!Servizio adattatore di sincronizzazione esportato ma non protetto
Ho un adattatore di sincronizzazione nella mia app e un servizio di sincronizzazione corrispondente. Ho dichiarato tutto, compreso il servizio di sincronizzazione, in base allo Google example code. L'immagine più simile a questa:
<service
android:name="com.myapp.SyncService"
android:exported="true"
android:process=":sync">
<intent-filter>
<action
android:name="android.content.SyncAdapter"/>
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
Mentre ha senso per impostare l'attributo android:exported
per true
sul servizio (consentendo al sistema Android per raggiungerlo), io sono un po 'perplesso su come legarlo giù in termini di diritti di accesso. Non voglio che nessun altro, tranne la mia app e il sistema Android, abbiano accesso al servizio.
Forse un po 'ingenuamente ho creato il mio permesso per questo:
<permission
android:name="com.myapp.permission.SYNC_ADAPTER"
android:protectionLevel="signatureOrSystem" />
Ma leggendo un po' sul protectionLevel
mi domando ancora di più. Google says:
Si prega di evitare l'uso di questa opzione [...] il permesso "signatureOrSystem" viene utilizzato per alcune situazioni particolari in cui più fornitori hanno applicazioni integrate in un'immagine del sistema e la necessità di condividere le caratteristiche specifiche in modo esplicito perché sono in fase di costruzione insieme.
Lo scenario descritto è lontano dal mio caso d'uso. Resta quindi la seguente domanda:
Come proteggere il servizio di sincronizzazione in modo che il sistema Android, ma nessuna app di terze parti, possa accedervi?
Qualsiasi chiarimento sarebbe molto apprezzato!
Hai provato a utilizzare solo un "signature" protectionLevel? Sospetto che il sistema possa ancora accedere al tuo adattatore di sincronizzazione. –
Sì, ho. Ed esattamente come dici tu, il sistema Android * sembra * avere accesso. Ma questo è un comportamento documentato? Sono fortunato sul mio dispositivo? Tutti gli utenti della mia app saranno fortunati con i loro dispositivi? – dbm