2011-12-09 9 views
15

ho voluto definire il nome della stringa di mio intento nel file strings.xml, e quindi associare quella stringa ad un filtro intento, come così:Puoi definire un filtro intent-intent Android utilizzando una risorsa stringa?

<intent-filter > 
    <action android:name="@string/app_intent" > 
    </action> 

    <category android:name="android.intent.category.DEFAULT" > 
    </category> 
</intent-filter> 

Quando ho provato questo però, ottengo vari errori sul sistema potrebbe non trovare alcuna attività per gestire il mio intento. Stavo cercando di mantenere i valori (cioè i nomi degli intenti) centralizzati anziché codificati nel manifest e nel codice. Così com'è, almeno questo mi consente di centralizzarlo dal codice dell'applicazione, ma lo ho ancora codificato nel manifest.

È davvero impossibile o esiste un modo per farlo funzionare?

+3

Interessante domanda. Cosa succede se si rimuove il "" da '@ string/app_intent'? Mi aspetterei un errore di compilazione ma potrebbe valere la pena provare. – Squonk

+0

Domanda interessante. –

+0

Per curiosità, cosa vorresti * questo da fare? Le risorse possono variare in base alla configurazione del dispositivo, dall'orientamento orizzontale/verticale a quello dello schermo alla lingua corrente. Non vorrai che l'azione intentata vari con questi parametri. – adamp

risposta

6

Non è il problema con intent-filter, il problema è con android:name. L'attributo android:name non sta inoltre utilizzando la risorsa stringa per il nome dell'attività. esempio <activity android:name="@string/app" android:label="@string/app_name"> non è valido in Android.

+0

È ** specificamente ** l'attributo 'android: name', o è limitato ai nodi di attività? Poiché l'altro, 'android: label' ** fa ** prende ID di risorsa come tale, almeno sul nodo 'application' del manifest. – eidylon

+0

Beh, non sono esattamente sicuro di dove si trova la limitazione, in quanto alcuni attributi nel DO manifest in realtà supportano questo metodo. Ma a quanto pare questo, per qualsiasi ragione, non lo fa. – eidylon

Problemi correlati