2010-12-06 5 views
4

Wir überprüfen derzeit unser Anwendungsmanifest, um explizit das Attribut uses-feature zu verwenden, um alle Abhängigkeiten von Hardware- und Software-APIs zu deklarieren.android.hardware.telephony unterbricht die Installation auf dem Emulator

Da wir erwarten, dass der Benutzer über mobiles Internet verfügt, setzen wir android.hardware.telephony auf true, aber jetzt kann die App nicht mehr auf dem Emulator installiert werden. Die Fehlermeldung lautet:

Failure [INSTALL_FAILED_MISSING_FEATURE] 

Es gibt keine weiteren Informationen, auch nicht in den Geräteprotokollen, aber ich kann durch Versuch und Irrtum herausfinden, dass die Telefoniefunktion es verursacht wurde.

Da der Emulator die Telefoniefunktionalität unterstützt (Sie können sogar das Versenden eines Anrufs simulieren), warum bricht dieser? Und selbst wenn es korrekt meldet, dass es die Telefonie nicht unterstützt, sollte es nicht offensichtlich sein, dass uses-feature auf reale Geräte ausgerichtet war, nicht auf den Emulator?

Ich bin eigentlich ziemlich verwirrt über dieses Attribut jetzt im Allgemeinen, da its documentation scheint implizieren, dass es nur Filterregeln für Android Market betrifft. Ich kann nicht sehen, wo erwähnt wird, dass uses-feature einen direkten Einfluss auf die Installierbarkeit einer App hat, die weit über die bloße deklarationelle/informationelle Natur hinausgeht, die die Dokumente ihm zuweisen.

Vielleicht ist es nicht eine gute Idee, es doch zu verwenden? Unser Build-Server wird nicht mehr ausgeführt, da die Installation im Emulator jetzt immer fehlschlägt ...

+0

was genau die Fehlermeldung Sie haben? –

+0

Entschuldigung, fügte die Fehlermeldung hinzu, die wir sehen. – Matthias

+0

Das ist seltsam, aber wollen Sie diese Einschränkung wirklich platzieren? Ein Benutzer kann eine gute WLAN-Abdeckung haben und sich nicht für eine monatliche Mobilfunkrechnung entscheiden. –

Antwort

0

Ich habe eine App, die Telefonie verwendet und funktioniert gut mit dem 2.2-Emulator und ich nehme an, Sie haben das erforderliche Attribut bereits auf false festgelegt in Ihrem Manifest:

<uses-feature android:name="android.hardware.telephony" android:required="false"/> 

Wenn das der Fall ist, ist meine Vermutung, dass es andere Funktion oder die Erlaubnis in Ihrem Manifest deklariert ist, die nicht in dem Emulator und den Fehler verursacht ist. Jage es durch Versuch und Irrtum.

+0

Ich verstehe nicht ganz - wenn die App Telefonie erfordert, sollte diese Funktion nicht auf 'true' gesetzt werden? Das Problem ist, wie ich sehe, dass der Emulator zwar Telefonie unterstützt, aber Android meldet, dass dies nicht der Fall ist. – Matthias

+0

erforderte standardmäßig default. Wenn Sie eine Funktion angeben, die benötigt wird und das Gerät sie nicht unterstützt, können Sie nicht installieren und/oder Sie werden auf dem Markt gefiltert. Ich musste den Emulator als besonderen Fall in meinen Apps behandeln, wenn ich mit TelephonyManager arbeite. –

0

Im Grunde, was Sie benötigen einen neuen Emulater mit mehr Funktionen verwenden, unterstützt wird, oder alternativ können Sie wie folgt vorgehen:

1.Comment oder die folgenden Zeilen aus Ihrem Manifest XML-Datei entfernen

<!-- COMMENT ME --> 
<uses-feature android:name="android.hardware.telephony" /> 

OR

2.Add folgendes:

<!-- UNCOMMENT ME and add android:required="false" --> 
<uses-feature android:name="android.hardware.telephony" android:required="false"/> 

Sie sollten gut gehen, wenn Sie es richtig machen.

See Sample