1

さて、私は特定の番号をダイヤルすることで開始するアプリケーションを作成しました。ダイヤル イベントをキャッチするためにNEW_OUTGOING_CALL (ブロードキャスト レシーバー) を使用しました。これまでのところ、私の AndroidManifest.xml のブロードキャスト レシーバーは次のコードのようなものです。

<receiver android:name=".CustomBroadCastReceiver">
    <intent-filter>
         <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
    </intent-filter>
</receiver>

問題は、新しいシステムで試してみると、最初は機能しないことですが、数回テストした後、機能し始めます。Android のログを確認したところ、ブロードキャスト レシーバーとしても登録されていないようです。Android リファレンスでこの動作の理由を見つけることができませんでした。また、誰かが同じ問題を抱えていて、その解決策を見つけたかどうかを知りたいです。

この放送受信機が私のアプリケーションの起動トリガーであると考えてください。

停止されたパッケージについても読んだことがあります. それが私のケースに関連しているかどうか知りたいです. 関連している場合, AndroidManifest.xml に FLAG_INCLUDE_STOPPED_PACKAGES などのフラグを設定する方法はありますか?

======編集======

adbシェルで初めて次のコマンドを呼び出した後

am broadcast -n com.package.name/.StartApp

この行はエミュレータのログに表示されます

06-15 11:17:53.216: INFO/ActivityManager(74): Start proc com.package.name for broadcast com.package.name/.StartApp: pid=2153 uid=10041 gids={3003}

そして、ブロードキャストレシーバーがエミュレーターに登録されます。ブロードキャストレシーバーを登録するには、アプリケーションを開始する必要があるようです

4

1 に答える 1

3

Android のドキュメントには何も見つかりませんでしたが、このケースをさまざまなデバイスでテストするのに何時間も費やした後、ブロードキャスト レシーバーはアプリケーションの実行後にのみ登録されることがわかりました。したがって、明らかに、インストール後に 1 つのアクティビティを開始する必要があり、その後、すべてが完全に機能します。

于 2013-07-15T12:56:18.213 に答える