2015-09-22 20 views
12

許可設定が[設定]から[許可]に変更されたときに、アプリケーションにブロードキャストやアラートが表示されますか?私は、アプリケーションが起動し、LOCATION GROUP権限を持っているときに何らかのログを開始するシナリオを持っています。しかし、ユーザーがアプリケーションのクラッシュの間にこの権限を取り消すと、ユーザーがログを取り消したときにログを停止する方法はありません。このロギングは第三者図書館からのものですので、間にチェックパーミッションのチェックを入れることはできません。アンドロイドでのブロードキャストアクション許可の変更M

+0

ブロードキャストがありません。アクセス許可が与えられているかどうかを確認することができます。 – tyczj

+1

このようなsuxorsは、特に、*必須*、プロンプト、承認済みのバックグラウンドで実行されているサービス許可を得ていますが、誰かがパーミッションを無効にして*実行中*を拒否しています。権限が変更されたことを伝えるイベントがなければ、サービスは正常に動作し続けるように見えます。すでに承認されている権限へのすべての呼び出しに対して権限をテストすることは、賢明に推奨されるプラクティスに従わなければなりません。イベントをキャッチしてサービスを一時停止し、再開が必要な第一級の通知を促す方がよいでしょう。 – swooby

答えて

18

許可設定が「設定」から「変更」に変更されても、アプリケーションはブロードキャストやアラートを受信しませんか?

これは文書化されていません。

以前に許可された権限をユーザーが取り消すと、プロセスは終了します。次に実行すると、パーミッションのチェックの一環としてパーミッションの変更を知ることになります。

ユーザーが以前に拒否されたアクセス許可を与えた場合、プロセスはではなく、が終了しています。しかし、もう一度、checkSelfPermission()に電話をすると、アクセス権があることがわかります。

ここでの教訓は、アクセス許可の検索結果をキャッシュしないことです。彼らはかなり安いコールのようですので、必要に応じてcheckSelfPermission()に電話してください。

targetSdkVersionが23未満の場合、checkSelfPermission()は役に立ちませんが、SecurityExceptionではなく、偽のデータを取得する必要があります。ロケーションの修正の場合、ユーザーがロケーションへのアクセス許可を取り消した場合、ロケーションを取得しないでください。

しかし、ユーザーは、当社のアプリケーションのクラッシュ

の間にこの権限を取り消すとき、私は、バックグラウンドサービスが実行されているシナリオを試していないと、ユーザーが許可を取り消します。それはあなたのプロセスを終了する必要がありますので、あなたのサービスが次回実行されるときに権限の変更について知ることができます。あなたのプロセスがではなく、で終了していることが判明している場合は、Androidのバグの兆候かもしれません。

+0

実際には、設定/アプリケーションから権限を取り消してから、自分のアプリに戻すことができます。 –

+0

私は許可を取り消しましたが、今は私がpsを実行してもプロセスは実行されませんが、私のアプリケーションは最近のアプリケーションリストに残っており、そこから起動することができます。私は最近のアプリのリストからそれをきれいにすることができる方法はありますか? –

+0

@SumitShrivastava: "しかし、私のアプリケーションはまだ最近のアプリのリストにあります" - 確かに。 Android 5.0以降では、永遠にそこにいます。 「最近のアプリリストからもそれを消去できる方法はありますか?」 - ユーザーが設定でアクセス権を切り替えたときではありません。 overview/recent-apps画面に表示されるあなたのアプリによって引き起こされている問題を説明してください。 – CommonsWare

関連する問題