[解決済み】パーミッションの拒否:startForegroundはandroid.permission.FOREGROUND_SERVICEを必要とします。
2022-04-04 16:17:05
質問
最近、突然以下のようなスタックトレースがいくつか表示されるようになりました。なぜでしょうか?これは、アプリがオーディオコメンタリーサービスをメディア通知などでフォアグラウンドに移動させようとしたときのものです。
java.lang.SecurityException: Permission Denial: startForeground from pid=1824, uid=10479 requires android.permission.FOREGROUND_SERVICE
at android.os.Parcel.createException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1910)
at android.os.Parcel.readException(Parcel.java:1860)
at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:5198)
at android.app.Service.startForeground(Service.java:695)
at com.example.app.services.AudioService.setUpMediaNotification(AudioService.java:372)
at com.example.app.services.AudioService.setUpAndStartAudioFeed(AudioService.java:328)
at com.example.app.services.AudioService.onStartCommand(AudioService.java:228)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3667)
at android.app.ActivityThread.access$1600(ActivityThread.java:199)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.enforcePermission(ActivityManagerService.java:9186)
at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked(ActiveServices.java:1189)
at com.android.server.am.ActiveServices.setServiceForegroundLocked(ActiveServices.java:870)
at com.android.server.am.ActivityManagerService.setServiceForeground(ActivityManagerService.java:20434)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:976)
解決方法は?
を設定した場合、このような現象が発生します。
targetSdkVersion = 28
(Android 9 / Pie) 以上であり、かつ、その使用方法を宣言していない場合。
FOREGROUND_SERVICE
のパーミッションが必要です。
から マイグレーションノート をAndroid 9に対応させました。
フォアグラウンド・サービスを利用したいアプリは、現在では FOREGROUND_SERVICE の許可を先に取得します。これは通常のパーミッションなので の場合、リクエストしたアプリに自動的に付与されます。を開始します。 許可されていない foreground サービスは SecurityException をスローします。
解決策としては、以下のように追加するだけです。
AndroidManifest.xml
:
<manifest ...>
...
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
...
<application ...>
...
</manifest>
関連
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】コンテンツには、id属性が「android.R.id.list」であるListViewが必要です。
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】Bluestackの向きを変更する : ポートレート/ランドスケープモード
-
[解決済み】android.content.res.Resources$NotFoundExceptionの取得:androidにリソースが存在する場合でも例外が発生する。
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] 複数のデバイスを接続しているときにADB Shellを使用するには?error: more than one device and emulator "で失敗します。
-
[解決済み] setBackgroundDrawable() 非推奨
-
[解決済み] Androidアプリケーションからインターネットにアクセスするには、どのような権限が必要ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】Androidエミュレータのエラーメッセージ。"PANIC: Missing emulator engine program for 'x86' CPUS." (パニック: エミュレータ・エンジン・プログラムがありません)
-
[解決済み] [Solved] Unsupported method: ベースコンフィグ.getApplicationIdSuffix()
-
[解決済み】"ビットマップが大きすぎてテクスチャにアップロードできない"
-
[解決済み】Android Studio。adbバージョン」の結果を取得できない
-
[解決済み】findViewByIDがnullを返す。
-
[解決済み】Bluestackの向きを変更する : ポートレート/ランドスケープモード
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] setBackgroundDrawable() 非推奨
-
[解決済み] Android 8.0: java.lang.IllegalStateException: Not allowed to start service Intent