6

Android 1.5からAndroid 2.3.4まで正しく動作するランチャーアクティビティのないアプリケーションがあります。私の放送受信機によって開始されます。しかし、Honeycomb(Motorola Xoom)では、私の放送受信機はまったく動作しません(どんな意図も捕まえません)。私は私のマニフェストにランチャーの活動を追加した場合:Android - [Xoom/Honeycomb]アプリケーションがLAUNCHERアクティビティなしで動作しない

<activity android:label="@string/app_name" android:name="com.myapp.MainActivity"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 
</activity> 

その後、私のアプリが正常に動作する(放送受信機は、すべての必要なインテントをキャッチし、私のサービスを開始します)。

私は非常に助けに感謝します!

+0

放送受信機はどこに定義されていますか? –

+0

@ Jon Willis:受信者はマニフェストで定義されています。 CommonsWareとGauravはこの問題について説明しました。ご協力ありがとうございました! – Kacper86

答えて

10

Honeycomb 3.1以上を実行していますか?はいの場合は、見てくださいhere。 アプリケーションがインストールされると、アプリケーションは停止状態になります。アプリケーションが最初に起動されると、アプリケーションは停止状態から移動されます。

停止状態のアプリケーションは、すべてのブロードキャストインテントによって開始されません。ブロードキャストインテントの送信者は、停止したアプリケーションも起動したい場合は、Intent.FLAG_INCLUDE_STOPPED_PACKAGESフラグを指定する必要があります。

Intent intent = new Intent(MY_INTENT_ACTION); 
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
sendBroadcast(intent); 

インテントを送信するコードを変更できない場合は、ランチャーのアクティビティを維持することをお勧めします。インストール後にユーザーがアプリケーションを起動すると、そのアプリケーションは停止状態から移動し、ブロードキャストの受信を開始します。

注意ユーザーは、デバイス設定の[アプリケーションの管理]からアプリケーションを停止状態に戻すことができます。

+0

すみません、ありがとうございました! – Kacper86

4

Android 3.1以降では、アクティビティの起動など、他の手段でアプリケーションを少なくとも1回起動するまで、BroadcastReceiversは呼び出されません。

アクティビティを持たないアプリケーションではユーザーが非常に混乱する傾向があるため、何もしていなければ、オンラインヘルプのために、最初はアクティビティがあったはずです。 Android 3.1では、それがさらに重要です。

+0

ご連絡ありがとうございました! – Kacper86

関連する問題