2011-12-09 8 views
15

Chciałem zdefiniować nazwę ciąg moim zamiarem w pliku strings.xml, a następnie powiązać ten ciąg do filtra intencji, a więc:Czy potrafisz zdefiniować filtr intencji Androida za pomocą zasobu ciągów?

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

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

Kiedy próbowałem to jednak ja się różne błędy o systemie nie mógł znaleźć żadnej aktywności, która mogłaby mi sprostać. Próbowałem zachować scentralizowane wartości (tj. Nazwy intencyjne) zamiast zakodowanych na stałe w manifeście, a także w kodzie. W tej chwili przynajmniej pozwala mi to scentralizować go z kodu aplikacji, ale nadal mam go zakodowany w manifeście.

Czy to naprawdę niemożliwe, czy jest jakiś sposób, aby to zadziałało?

+3

Interesujące pytanie. Co się stanie, jeśli usuniesz znak "" z "@ string/app_intent"? Spodziewam się błędu kompilacji, ale warto spróbować. – Squonk

+0

Interesujące pytanie. –

+0

Z ciekawości, czego byś się * spodziewał * tego robić? Zasoby mogą się różnić w zależności od konfiguracji urządzenia - od orientacji poziomej i pionowej po wielkość ekranu do bieżącego języka. Nie chciałbyś, aby działanie zamiaru zmieniało się z tymi parametrami. – adamp

Odpowiedz

6

To nie jest problem z filtrem intencyjnym, problem dotyczy android:name. Atrybut android:name nie przyjmuje także zasobu ciągowego dla nazwy działania. przykład <activity android:name="@string/app" android:label="@string/app_name"> nie jest poprawny w systemie Android.

+0

To jest ** konkretnie ** atrybut 'android: nazwa', czy jest on ograniczony do węzłów aktywności? Ponieważ drugi, 'android: label' ** does ** przyjmuje identyfikatory zasobów jako takie, przynajmniej w węźle' application' pliku manifestu. – eidylon

+0

Nie jestem dokładnie pewien, gdzie leży ograniczenie, ponieważ niektóre atrybuty w manifeście faktycznie wspierają tę metodę. Ale najwyraźniej ten, z jakiegokolwiek powodu, nie. – eidylon

Powiązane problemy