問題タブ [android-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 投票する
4 に答える
1499 参照

android - Android - 複数のローカル通知を送信するサービスの問題

Android アプリのコード ベースを継承しましたが、特にローカル通知の問題に直面しています。

アイデアは、ユーザーが通知を希望するイベントの何分前にリマインダー設定も考慮して、将来スケジュールされる各イベントの通知を送信することです。

通知が初めてスローされた後、ユーザーがイベントの開始前にアプリを開くと、通知がもう一度スローされることを除いて、すべてが正常に機能します。これは、(イベント開始日 - リマインダー) とイベント開始日の間にアプリが開かれるたびに発生します。

私はすでにこれを見ましたが、これ運が悪いです。サービスを使用するとまさにこの問題が発生する可能性があり、それを削除することを提案する人もいますが、アプリを閉じたときにも通知をスローする必要があるため、これが必要だと思います.

現在、コードの構造は次のとおりです。

編集 - TabBarActivity の説明を更新

TabBarActivity 内には、AlarmManager をスケジュールするメソッドscheduleTravelNotificationがあります。このメソッドは、ローカル データベースに新しいイベントが追加されるたびに、または既存のイベントが更新された場合に実行されます。TabBarActivity は、このメソッドを onCreate および onResume メソッド内で実行します。TabBarActivity は、通知 - onclick イベントのターゲットでもあります。

これはTravelNotificationReceiver.java です(BroadcastReceiver の代わりに LocalBroadcastReceiver を使用する必要がありますか?)

TravelNotificationService.javaは、Type = "Travel"、flags = 0、title = "something"、text = "something else" としてNotificationService.java設定を拡張します。

編集 - NotificationHelper.buildNotification のコードは次のとおりです。

答えてくれてありがとう!

編集これも見ましが、受け入れられた回答はありませんが、この投稿では、すでに if(alarmTime < currentTime){ return; で管理されていると思われることを示唆しています。} scheduleTravelNotification で

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

android - Android ブロードキャスト レシーバーのカスタム権限

Android のセキュリティ モデルを考慮して、カスタム アクセス許可を試しています。アプリケーションでブロードキャスターのアクセス許可を強制しようとしています。シナリオは、次のようなブロードキャストをトリガーするアクティビティ A があることです (許可あり):

このアクティビティ A では、次のように onCreate にレシーバーを登録します。

受信者は必要な権限を持っているため、ブロードキャストを受信することを期待しています。ただし、アクティビティによって送信されたブロードキャストは受信しません。LocalBroadcastManager を使用しない理由については議論があるかもしれませんが、私の動機は、このメソッドが期待どおりに機能しない理由を突き止めることです。

マニフェストでレシーバーを宣言しておらず、動的にのみ登録しています。上記のコードはすべて、同じアプリケーション内の単一のアクティビティからのものです。したがって、ここでは IPC は関係ありません。許可を確認するための簡単な例です。どんな助けでも大歓迎です。

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

android - onReceive内で複数のintent.getStringExtraを処理するきれいな方法は?

WebServiceWeb サービスへの複数の異なる要求を処理するクラスを作成しました。このクラスの Broadcast と意図keyは、クラスで最初に呼び出されたメソッドに応じて異なりWebServiceます。これを適切に処理する方法に行き詰まっていWebServiceReceiverます...

の重要な部分は次のWebServiceとおりです。

これが私のものonReceiveです:

私が持っているものは機能しますが、コードのコメントで述べたように、適切な方法ではないように感じます。

これにアプローチするより良い方法はありますか?onReceiveこれを再利用して、すべてのWebServiceブロードキャストを処理したいだけです。

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

android - Android 6.0 でアラーム マネージャがバックグラウンドで動作しない

これは私のActivityコードです、

これらは、アプリで持っているすべての権限です。

これは私のBroadcastReceiverコードです、

BroadcastReceiverマニフェストに登録しましたが、

上記のコードは、BroadcastReceiverMarshMallow 以前のデバイスではバックグラウンドで正常に実行されますが、MarshMallow デバイスではBroadcastReceiver実行されません。ここで何が起こっているのか知っている人はいますか?ありがとう。

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

java - プログラムで BOOT_COMPLETED ブロードキャストに登録する

電話の起動時にサービスをスタートアップに登録しようとしています。

サービス クラスで BOOT_COMPLETED BroadcastReciever をセットアップしました。

ただし、呼び出されていません。マニフェストにアクセス許可が設定されています。

電話の起動時に(マニフェストでブロードキャストに登録せずに)このブロードキャストをサービスで起動する際に何が欠けているか知っていますか?

答え

この場合、起動時にサービスを呼び出すクラスを登録するために XML を使用する必要がありました。

そしてマニフェストで:

0 投票する
0 に答える
241 参照

android - 複数の GCM レシーバー - プッシュが機能しない場合がある

アプリに 2 つの GCM レシーバーがあります。それらの 1 つは UrbanAirship によって使用され、もう 1 つは別のサービスのアプリケーションによって使用されます。私は今、奇妙な問題に直面しています。インストール時にプッシュ通知が機能する場合があり、アンインストールして再度インストールしようとしても、何も受信しません。GCM 登録トークンに関係していると思いますが、ログにそのエラーは表示されません。マニフェスト ファイル内の GCM のレシーバーは次のとおりです。

これはライブラリの受信機です

0 投票する
0 に答える
531 参照

android - アプリケーション コンテキストを使用した BroadcastReceiver の ReceiverCallNotAllowedException

Android バージョン 4.1.2 で次のエラーが発生します。

エラーの原因となっているコードは次のとおりです。このレシーバーは、動的ではなく静的に (AndroidManifest.xml で) 登録されています。

私は過去にこのエラーに遭遇し、Broadcast Receiver に渡されたコンテキストに registerReceiver() を呼び出す機能がないことが原因であることがわかりました。

Broadcast Receiver に渡されたコンテキストをアプリケーション コンテキストに変換し、アプリケーション コンテキストで registerReceiver() を呼び出すことができることを示唆するリソースをいくつか見つけました。これは Android バージョン 4.2 以降で機能しますが、4.1.2 では失敗します (それより低い可能性もありますが、明示的にテストされていません)。アプリケーション コンテキストに変換すると registerReceiver() を呼び出せるようになりますが、すべてのバージョンの Android で機能するとは限りません。

この動作について誰か説明がありますか?

編集: プロットが厚くなります...このクラッシュは Android バージョン 4.1.1、4.1.2、4.3.0、および 5.1.1 で発生し、クラッシュの 93% 以上が 4.1.2 で発生したことがわかりました。これに対する解決策が見つかるかどうかはわかりませんが、今後の私の修正は、BroadcastReceiver から registerReceiver() を呼び出さないことです。明らかにこれを許可するはずのアプリケーションコンテキストを使用している場合でも、動作は未定義で予測できないようです。

0 投票する
0 に答える
45 参照

java - アプリケーションを起動せずにホームページにアプリケーションのショートカットを作成する

私はAndroidアプリケーションに取り組んでいます。これをランチせずにアプリケーションのショートカットを作成したいです。このコードも試しましたが、これではアプリケーションを少なくとも1つロードする必要があります.しかし、デバイスアプリケーションにアプリケーションをインストールするときにアプリケーションのショートカットを作成したい昼食は必須ではありません。Flipkart.it と同様に、デバイスにインストールするとアプリケーションのショートカットが自動的に生成され、アプリを起動する必要はありません。

また、Broadcaster Receiver を使用してこれを実行しようとしましたが、成功しませんでした。コードは次のようになります。

Manifeasts.xml

ApplicationBroadcastService.java

}

このコードでは、アプリのインストール時にブロードキャスト レシーバーが呼び出されません。

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

android - wifiスキャンを使用したブロードキャストレシーバーが機能しない

AlarmManager で呼び出されるサービスに次のコードがあります (これはうまくいきます) が、wifi スキャンを開始すると (true を返します)、作成した BroadcastReceiver で結果を受け取ることはありません:

以前、Wifi スキャンで BroadcastReceiver を使用したことがありますが、これが機能しない理由がわかりません。

どうしたの?

編集: AndroidManifest.xml

0 投票する
0 に答える
101 参照

android - android- ブロードキャストで while ループを壊して進行中の IntentService ダウンロードをキャンセルする

次のコードを使用して、IntentService を使用して URL からファイルをダウンロードしています。

そのままで問題なく動作しますが、進行中のダウンロードまたはキューに入れられたファイルの 1 つをキャンセルしたい場合は、まだこのステップで行き詰っています。キャンセル ボタンをクリックすると、サービスが送信される場所でブロードキャストを送信できると考えていました。それを聞いて、放送がwhile ((bytesRead = bis.read(buffer)) > 0)ループを壊すと言うなら、それはそれを壊します。

このシナリオは可能ですか?

よろしく