問題タブ [android-implicit-intent]
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 (API 28) - バックグラウンドでの暗黙的なインテントの受信
私は現在の Android バックグラウンド サービスの可能性にひどく混乱しており、専門家の助けが必要です :)
「xDrip」アプリケーションは、「com.eveningoutpost.dexdrip.BgEstimate」というアクション名を持つ (おそらく暗黙の) インテントを介して情報をブロードキャストしています。これらのインテントを受け取りたい。それらをマニフェストに入れることは許可されていないため、アプリケーション クラスの onCreate() メソッドに動的に登録しました。これは、アプリが実行されている限り (アプリが画面上で開かれていない場合でも) うまく機能しています。しかし、アプリの概要でスワイプすると、インテントの登録を解除していなくても、インテントを受信しなくなります。
私の質問は次のとおりです。この (暗黙の) インテントを常に確実に受け取るための最も適切な方法は何でしょうか? また、ユーザーがアプリの概要画面でアプリをスワイプしたときも?
乾杯!
android - Android の暗黙的なインテントがメディア プレーヤーを起動するが、メディア プレーヤーは「インテントは有効ではありません」と言う
ユーザーがmp4ファイル、日付、時刻を選択できるアプリケーションを作成しました。設定が完了すると、アプリはフォアグラウンド サービスを開始し、時間になると暗黙的なインテントを使用してメディア ファイルを再生します。
ユーザーがメディア ファイルを選択できるようにするためのコード:
API 23 を実行している私の電話でサンプルを実行するには、取得した logcat から
これは、Uri が正常に受信されたことを示しています。
フォアグラウンド サービスから、メディア ファイルを再生します。
再びlogcatから、
携帯電話で、mp4 ファイルを再生できるアプリのリストが表示されます。通常は mp4 ファイルを再生できる組み込みのメディア プレーヤーを選択します。今、私はエラーが発生します。
ログキャットから、
インテントが有効でない理由を誰か教えてもらえますか?
更新 1:
VLC for Androidを使用して、API 27を実行するエミュレーターで試しました。Logcat は別のエラーをスローします。
更新 2:
アプリで恐ろしい問題を発見しました。私のアプリの構造は次のとおりです。
Activity1 --> メディア Uri を取得し、Activity2 を開始します
Activity2 --> ユーザーが日付を選択し、Activity3 を開始
Activity3 --> ユーザーが時間を選択し、MyService を開始
MyService --> インテントを使用して正しいタイミングでメディアを再生するフォアグラウンド サービス
ここで、テストの結果、Activity1 が MyService を直接開始した場合 (日付と時刻をプログラムで設定した場合)、メディアを適切に再生できることがわかりました。
しかし、Activity1 が Activity2 を開始すると、MyService が直接開始されます (ここでも時間を設定します)。メディアは再生できません!!
MyService を呼び出すのと同じインテント フラグを使用して Activity2 を呼び出すことを思い出してください。
これは必然的に、このリンクで@CommonsWare によって示される問題です。同じインテント フラグでアクティビティを開始すると、パーミッションは有効のままになると考えました。しかし、そうではありません!