問題タブ [broadcastreceiver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
974 参照

android - Android ログへのエントリをリッスン/検出する

ログへのエントリをリッスンすることは可能ですか? つまり、ログ エントリが追加されたときのブロードキャスト インテントはありますか?

0 投票する
1 に答える
2119 参照

android - AndroidにGoogleVoiceアクションを実装する

どうすればVoice ActionsGoogleのかなり新しいものをAndroidに実装できますか?いくつかの音楽アプリケーションで使用されているアクション
を聞く可能性を考えています。 アプリがレシーバーとして登録する必要のある特定のブロードキャストはありますか?Listen to

0 投票する
3 に答える
10097 参照

android - Android ブロードキャスト レシーバ エラー: クラスが見つからないという例外

アプリをアップグレードするたびに、またはパッケージを初めてインストールする場合にポップアップ メッセージがユーザーに表示されるように、ブロードキャスト レシーバーをセットアップしています。Android 2.2 を実行している Droid で、新規インストール時とアプリのアップグレード後の両方と、1.5 および 1.6 を実行しているエミュレーターでこれをテストしたところ、すべて正常に動作することがわかりました。

ただし、次の例外をリストするエラー レポートをユーザーから受け取りました。

ユーザーの 1 人がこの例外を受け取った理由を教えてもらえますか?

私のマニフェストファイルでは、次のように設定しています。

クラス FirstRunBroadcastReceiver は次のようにセットアップされます。

初めてインストールすると、ポップアップ メッセージが表示されるように共有設定のデフォルト値が設定されますが、この例外とは何の関係もないと思います。

再度テストしましたが、例外は発生しません。ご協力いただきありがとうございます。

0 投票する
1 に答える
10508 参照

android - Android: 別のアプリケーションがオーディオの再生を開始したことを検出する

私の音楽アプリケーションは常にバックグラウンドで音楽を再生していますが、別のアプリケーション (YouTube アプリなど) がオーディオの再生を開始したことを検出して、アプリケーションでオーディオを一時停止/ミュート/停止できるようにしたいと考えています。

これにより、ユーザーは音楽を聴きながらウェブを閲覧し続けることができますが、いつでもビデオを見たい場合は、オーディオの競合なしで視聴できます.

1 つの解決策は、アプリケーションが AudioManager の使用を開始するタイミングを示すブロードキャストをリッスンすることです。そのようなインテントアクションは存在しますか?


編集:以下の回答のように、2.2 でオーディオ フォーカスの喪失を検出する方法があるようAudioManager.OnAudioFocusChangeListenerです。

素晴らしいですが、Android のより一般的なバージョンの解決策はありますか? 理想的には 1.5+。

0 投票する
4 に答える
8498 参照

android - ACTION_USER_PRESENT BroadcastReceiverをマニフェストに登録できませんか?

複数のブロードキャスト(たとえば、 ACTION_TIME_TICK)をマニフェストに登録できないことがわかりました。は、を介して明示的に登録する必要がありますContext.registerReceiver()ACTION_USER_PRESENTブロードキャストインテントに問題があります。具体的には、エミュレーターでテストしましたが、アプリケーションはエラーで強制終了し続けます。

これはによって引き起こされます

私のマニフェストはかなり単純です:

何かご意見は?私は基本的に、アプリケーションのインストール後できるだけ早くウェイクアップするレシーバーを作成しようとしています。初めて起動すると、数人のリスナーが登録され、その後、登録が解除されるため、再度呼び出されることはありません。(アプリがインストールされた直後に、少しのセットアップを可能にするために、インテントが起動されたらいいのにと思います:))

0 投票する
2 に答える
1447 参照

android - Android BroadcastReceiver が機能しなくなったようです

私は現在、 を使用しbroadcastreceiverて着信テキスト メッセージをチェックするアプリに取り組んでいますが、突然動作しなくなったように見えます。少なくとも私にとっては、構文的に正しいように見える小さなテスト アプリケーションを作成しましたが、機能していません。

テスト プロジェクトのコードは次のとおりです。

マニフェスト:

BroadcastReceiver:

そして主な活動:

私が言うことができる限り、私は何も悪いことをしていませんが、明らかに私は間違っています!

0 投票する
6 に答える
26478 参照

java - Android の内部クラスとしてのブロードキャスト レシーバー

私のコードには、拡張する内部クラスがありますBroadcastReceiver

そして、次の行をに追加しましたAndroidManifest.xml

しかし、次のエラーが表示されます。

レシーバー org.example.test.OuterClass$InnerClass をインスタンス化できません

この問題を解決するにはどうすればよいですか?

0 投票する
3 に答える
17225 参照

android - Androidが削除されたパッケージでインテントACTION_PACKAGE_REMOVEDを受け取らない

私の Android アプリが削除されたら、アプリが SD カードに作成したファイルも削除したいと思います。これらのファイルは数メガバイトを消費する可能性があり、私のアプリでしか使用できないためです。

PACKAGE REMOVED インテントを受け取ることが、これを行う場所になるようです。ただし、ブロードキャスト レシーバーが呼び出されることはありません。PACKAGE REMOVED インテントが送信される前に削除されたようです。

コードは次のとおりです。

そして、マニフェストで:

0 投票する
1 に答える
502 参照

android - 別の Android アプリケーションから情報を取得するにはどうすればよいですか?

アプリケーション ("Bar") から情報を取得するには、サード パーティのアプリケーション ("Foo") が必要ですが、これまでのところ私のソリューションは面倒です。

  • アプリケーション Foo は Bar からの情報を必要とし、ブロードキャスト ("bar.POLL") を送信します。
  • Application Bar はこのブロードキャストをリッスンし、別のブロードキャスト ("bar.PUSH") で応答します。
  • Foo は bar.PUSH をリッスンし、含まれている Bundle の内容を読み取ります。

これを行うより直接的な方法はありますか?

編集: Guidoが提案したように、非常に単純な ContentProvider で解決しました:

プロバイダーをマニフェストに追加することを忘れないでください。

次のようにアクティビティから状態を更新します。

外部アプリでプロバイダーからコンテンツを取得します。

0 投票する
3 に答える
7513 参照

android - マニフェストと BroadcastReceiver のプログラムによる登録の主な違い

マニフェストに BroadcastReceiver を登録することと、プログラムで登録することの主な違いを理解しようとしています...

私の理解は基本的に次のとおりです(何か不足している場合は、誰かが私のポイントを修正していただければ幸いです)。

  • マニフェストに登録:

    1. OS は、アプリケーションの実行状態に関係なく、必要に応じて魔法のようにクラスを見つけてインスタンス化し、onReceive() メソッドを呼び出します。
    2. receive はブロードキャストごとに 1 回だけ呼び出されます (つまり、マニフェストに登録することは、ブロードキャストを受信するために「クラス」を登録するようなものであり、ブロードキャストは必要に応じてクラスをインスタンス化します) (??)
  • プログラムで登録:

    1. コードで登録するということは、クラスのインスタンスを登録してブロードキャスト メッセージを受信することを意味します (つまり、コードが少しずさんで、何度も登録すると、複数の BroadcastReceiver インスタンスがすべて onReceive() で呼び出されることになります)。放送
    2. 登録を解除するには、以前に登録した特定の BroadcastReceiver インスタンスを登録解除する必要があります
    3. アプリケーションが OS によって破棄された場合、 onReceive() メソッドはブロードキャストのために呼び出されません

ありがとう