Created
October 9, 2015 07:21
-
-
Save STAR-ZERO/32cb624836b472e7ec0f to your computer and use it in GitHub Desktop.
【Android】Marshmallow以降の権限チェックサンプル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SamplePermissionActivity extends AppCompatActivity { | |
// ... | |
private static final int PERMISSIONS_REQUEST_READ_PHONE_STATE = 1; | |
private void checkPermission() { | |
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { | |
// 許可されてない | |
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_PHONE_STATE)) { | |
// 拒否された and 「今後は確認しない」チェック無し | |
// or | |
// 一度は許可したが設定アプリから拒否された | |
// ★ここで何で権限が必要かを説明する | |
// ★★★ 問題点 ★★★ | |
// 一度拒否されないとココの処理は通らないため、初回確認時に説明を表示できない | |
// 初回確認を判定するには SharedPreferences 等に独自でフラグを保存する必要ある? | |
} else { | |
// まだ許可されない(初回確認) | |
// or | |
// 拒否された and 「今後は確認しない」チェックあり | |
} | |
// 確認ダイアログを表示 | |
// ただし、「今後は確認しない」にチェックがある場合は、ダイアログが表示されずに onRequestPermissionsResult が呼び出される | |
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSIONS_REQUEST_READ_PHONE_STATE); | |
} else { | |
// 許可されている | |
// or | |
// Marshmallowより過去バージョン | |
// ★ここで権限を使った処理 | |
} | |
} | |
@Override | |
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | |
switch (requestCode) { | |
case PERMISSIONS_REQUEST_READ_PHONE_STATE: | |
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
// 確認ダイアログの結果、許可された | |
// ★ここで権限を使った処理 | |
} else { | |
// 確認ダイアログの結果、拒否された | |
// or | |
// 拒否されて「今後は確認しない」にチェックされている | |
// ★権限が拒否されたときにやりたい処理 | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment