問題タブ [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.
android - Android ログへのエントリをリッスン/検出する
ログへのエントリをリッスンすることは可能ですか? つまり、ログ エントリが追加されたときのブロードキャスト インテントはありますか?
android - AndroidにGoogleVoiceアクションを実装する
どうすればVoice Actions
Googleのかなり新しいものをAndroidに実装できますか?いくつかの音楽アプリケーションで使用されているアクション
を聞く可能性を考えています。
アプリがレシーバーとして登録する必要のある特定のブロードキャストはありますか?Listen to
android - Android ブロードキャスト レシーバ エラー: クラスが見つからないという例外
アプリをアップグレードするたびに、またはパッケージを初めてインストールする場合にポップアップ メッセージがユーザーに表示されるように、ブロードキャスト レシーバーをセットアップしています。Android 2.2 を実行している Droid で、新規インストール時とアプリのアップグレード後の両方と、1.5 および 1.6 を実行しているエミュレーターでこれをテストしたところ、すべて正常に動作することがわかりました。
ただし、次の例外をリストするエラー レポートをユーザーから受け取りました。
ユーザーの 1 人がこの例外を受け取った理由を教えてもらえますか?
私のマニフェストファイルでは、次のように設定しています。
クラス FirstRunBroadcastReceiver は次のようにセットアップされます。
初めてインストールすると、ポップアップ メッセージが表示されるように共有設定のデフォルト値が設定されますが、この例外とは何の関係もないと思います。
再度テストしましたが、例外は発生しません。ご協力いただきありがとうございます。
android - Android: 別のアプリケーションがオーディオの再生を開始したことを検出する
私の音楽アプリケーションは常にバックグラウンドで音楽を再生していますが、別のアプリケーション (YouTube アプリなど) がオーディオの再生を開始したことを検出して、アプリケーションでオーディオを一時停止/ミュート/停止できるようにしたいと考えています。
これにより、ユーザーは音楽を聴きながらウェブを閲覧し続けることができますが、いつでもビデオを見たい場合は、オーディオの競合なしで視聴できます.
1 つの解決策は、アプリケーションが AudioManager の使用を開始するタイミングを示すブロードキャストをリッスンすることです。そのようなインテントアクションは存在しますか?
編集:以下の回答のように、2.2 でオーディオ フォーカスの喪失を検出する方法があるようAudioManager.OnAudioFocusChangeListener
です。
素晴らしいですが、Android のより一般的なバージョンの解決策はありますか? 理想的には 1.5+。
android - ACTION_USER_PRESENT BroadcastReceiverをマニフェストに登録できませんか?
複数のブロードキャスト(たとえば、 ACTION_TIME_TICK)をマニフェストに登録できないことがわかりました。は、を介して明示的に登録する必要がありますContext.registerReceiver()
。ACTION_USER_PRESENTブロードキャストインテントに問題があります。具体的には、エミュレーターでテストしましたが、アプリケーションはエラーで強制終了し続けます。
これはによって引き起こされます
私のマニフェストはかなり単純です:
何かご意見は?私は基本的に、アプリケーションのインストール後できるだけ早くウェイクアップするレシーバーを作成しようとしています。初めて起動すると、数人のリスナーが登録され、その後、登録が解除されるため、再度呼び出されることはありません。(アプリがインストールされた直後に、少しのセットアップを可能にするために、インテントが起動されたらいいのにと思います:))
android - Android BroadcastReceiver が機能しなくなったようです
私は現在、 を使用しbroadcastreceiver
て着信テキスト メッセージをチェックするアプリに取り組んでいますが、突然動作しなくなったように見えます。少なくとも私にとっては、構文的に正しいように見える小さなテスト アプリケーションを作成しましたが、機能していません。
テスト プロジェクトのコードは次のとおりです。
マニフェスト:
BroadcastReceiver:
そして主な活動:
私が言うことができる限り、私は何も悪いことをしていませんが、明らかに私は間違っています!
java - Android の内部クラスとしてのブロードキャスト レシーバー
私のコードには、拡張する内部クラスがありますBroadcastReceiver
。
そして、次の行をに追加しましたAndroidManifest.xml
:
しかし、次のエラーが表示されます。
レシーバー org.example.test.OuterClass$InnerClass をインスタンス化できません
この問題を解決するにはどうすればよいですか?
android - Androidが削除されたパッケージでインテントACTION_PACKAGE_REMOVEDを受け取らない
私の Android アプリが削除されたら、アプリが SD カードに作成したファイルも削除したいと思います。これらのファイルは数メガバイトを消費する可能性があり、私のアプリでしか使用できないためです。
PACKAGE REMOVED インテントを受け取ることが、これを行う場所になるようです。ただし、ブロードキャスト レシーバーが呼び出されることはありません。PACKAGE REMOVED インテントが送信される前に削除されたようです。
コードは次のとおりです。
そして、マニフェストで:
android - 別の Android アプリケーションから情報を取得するにはどうすればよいですか?
アプリケーション ("Bar") から情報を取得するには、サード パーティのアプリケーション ("Foo") が必要ですが、これまでのところ私のソリューションは面倒です。
- アプリケーション Foo は Bar からの情報を必要とし、ブロードキャスト ("bar.POLL") を送信します。
- Application Bar はこのブロードキャストをリッスンし、別のブロードキャスト ("bar.PUSH") で応答します。
- Foo は bar.PUSH をリッスンし、含まれている Bundle の内容を読み取ります。
これを行うより直接的な方法はありますか?
編集: Guidoが提案したように、非常に単純な ContentProvider で解決しました:
プロバイダーをマニフェストに追加することを忘れないでください。
次のようにアクティビティから状態を更新します。
外部アプリでプロバイダーからコンテンツを取得します。
android - マニフェストと BroadcastReceiver のプログラムによる登録の主な違い
マニフェストに BroadcastReceiver を登録することと、プログラムで登録することの主な違いを理解しようとしています...
私の理解は基本的に次のとおりです(何か不足している場合は、誰かが私のポイントを修正していただければ幸いです)。
マニフェストに登録:
- OS は、アプリケーションの実行状態に関係なく、必要に応じて魔法のようにクラスを見つけてインスタンス化し、onReceive() メソッドを呼び出します。
- receive はブロードキャストごとに 1 回だけ呼び出されます (つまり、マニフェストに登録することは、ブロードキャストを受信するために「クラス」を登録するようなものであり、ブロードキャストは必要に応じてクラスをインスタンス化します) (??)
プログラムで登録:
- コードで登録するということは、クラスのインスタンスを登録してブロードキャスト メッセージを受信することを意味します (つまり、コードが少しずさんで、何度も登録すると、複数の BroadcastReceiver インスタンスがすべて onReceive() で呼び出されることになります)。放送
- 登録を解除するには、以前に登録した特定の BroadcastReceiver インスタンスを登録解除する必要があります
- アプリケーションが OS によって破棄された場合、 onReceive() メソッドはブロードキャストのために呼び出されません
ありがとう