現在AppCompatActivity
、マシュマロのランタイム権限を確認するための次の方法があります。
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
boolean hasPermission = checkSelfPermission(Manifest.permission.XX)
== PackageManager.PERMISSION_GRANTED;
if(!hasPermission) {
if(shouldShowRequestPermissionRationale(Manifest.permission.XX)) {
// explain reason for permission, try again
} else {
// user deny with "don't show again"
}
}
}
これまでのところ、マシュマロにはかなりうまく機能していると思います。ただし、代わりにContextCompat.checkSelfPermission()を使用する必要がある、Mより前のバージョンのアクセス許可について心配する必要がありますか?pre-Mのパーミッションは、Xposedまたは同様のフレームワークを使用して変更できることを知っていますContextCompat.checkSelfPermission()
が、それは、Xposedなどによるパーミッションの拒否も十分に検出できることを意味しますか?
権限ブロッカーの実装(Xposedなど)に応じて、アプリに偽のデータが提供されるか、アプリのプロセスで権限が取り消されます。
アプリが偽のデータを取得しているかどうかを検出することはできませんが、その場合、アプリは少なくともクラッシュしません。
パーミッションがプロセスレベルで取り消された場合、ContextCompat.checkSelfPermission()
pre-Mでもパーミッションを検出して、を返しますPERMISSION_DENIED
。ContextCompat
メソッドを使用する場合は、ActivityCompat.shouldShowRequestPermissionRationale()
andActivityCompat.requestPermissions()
メソッドまたはそれらのFragmentCompat
バージョンも使用する必要があることに注意してください。
詳細については、こちらを参照してください:権限を処理するためのサポートライブラリメソッド。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加