6

Android1.5からAndroid2.3.4で正しく動作するランチャーアクティビティのないアプリケーションがあります。それは私の放送受信機によって開始されます。ただし、Honeycomb(Motorola Xoom)では、ブロードキャストレシーバーがまったく機能しません(インテントをキャッチしません)。マニフェストにランチャーアクティビティを追加すると、次のようになります。

<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>

その後、私のアプリは正しく動作します(ブロードキャストレシーバーは必要なすべてのインテントをキャッチし、サービスを開始します)。

助けていただければ幸いです。

4

2 に答える 2

10

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

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

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

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

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

于 2011-09-08T15:00:38.120 に答える
4

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

ユーザーは、アクティビティのないアプリケーションに非常に混乱する傾向があるため、オンライン ヘルプのために、最初からアクティビティを用意しておく必要がありました。Android 3.1 では、これがさらに重要になります。

于 2011-09-08T14:59:44.297 に答える