2010-12-06 18 views
4

現在、アプリケーションマニフェストを改訂して、uses-feature属性を明示的に使用して、ハードウェアおよびソフトウェアAPIのすべての依存関係を宣言しています。android.hardware.telephonyはエミュレータへのインストールを中断します

モバイルインターネットを利用することを期待しているので、android.hardware.telephonytrueに設定しましたが、アプリはエミュレータにインストールできません。エラーメッセージは次のとおりです。

Failure [INSTALL_FAILED_MISSING_FEATURE] 

がいなくても、デバイスのログには追加情報がありませんが、私は、テレフォニー機能がそれを引き起こしたことを試行錯誤によって見つけ出すことができます。

エミュレータはテレフォニー機能をサポートしているため(コールのディスパッチをシミュレートすることもできます)、なぜこれが中断しますか?また、電話機をサポートしていないと正しく報告しても、uses-featureはエミュレータではなく、実際のデバイスをターゲットにしていることは明らかですか?

its documentationは、Androidマーケットのフィルタリングルールにのみ影響することを暗示しているように見えるため、この属性は一般的にはかなり混乱しています。 uses-featureには、アプリケーションのインストール性に直接的な影響があることが言及されていますが、docs属性の単なる宣言的/情報的性質を超えているようです。

結局、それを使うのは良い考えではないでしょうか?

+0

正確にはあなたのエラーメッセージは何ですか? –

+0

申し訳ありませんが、私たちが見ているエラーメッセージを追加しました。 – Matthias

+0

これは変ですが、本当にこの制限を設けたいですか?ユーザーはWi-Fi通信範囲が適切で、毎月のモバイル請求を選択しない可能性があります。 –

答えて

0

私はテレフォニーを使用し、2.2エミュレータでうまく動作するアプリケーションを持っており、必須属性をfalseに設定しているとします。マニフェストで:

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

そのような場合、私の推測では、エミュレータ内に存在し、エラーの原因ではありません、あなたのマニフェストで宣言さ機能やアクセス権があることです。試行錯誤してそれを狩りなさい。

+0

アプリがテレフォニーを必要とする場合、その機能を「true」に設定しないでください。この問題は、エミュレータがテレフォニーをサポートしている間は、実際にAndroidにはないことを報告するということです。 – Matthias

+0

必須のデフォルトはtrueです。必要な機能の使用を宣言し、デバイスがそれをサポートしていないと、インストールすることができず、市場でフィルタリングされます。 私はTelephonyManagerを扱うときに私のアプリで特別なケースとしてエミュレータを処理しなければなりませんでした。 –

0

基本的にサポートされている複数の特徴と、より最近のエミュレータのを使用するか、あるいはあなたが次の操作を行うことができます必要なもの:

1.Commentアウトしたり、マニフェストXMLファイルから次の行を削除

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

OR

2.Add以下:

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

あなたはそれを正しく行うなら、あなたは良いことがあるはずです。

See Sample

関連する問題