나는 같은 문제에 직면했다. Android에는 두 가지 유형의 권한이 있습니다.
- 위험 (연락처 액세스, 외부 저장소에 쓰기 ...)
- 정상 (일반 권한은 Android에서 자동으로 승인되지만 위험한 권한은 Android 사용자가 승인해야합니다.)
Android 6.0에서 위험한 권한을 얻는 전략은 다음과 같습니다.
- 권한이 부여되었는지 확인
- 앱에 이미 권한이 부여 된 경우 계속해서 정상적으로 수행하십시오.
- 앱에 아직 권한이없는 경우 사용자에게 승인을 요청하십시오.
- 에서 사용자 승인 듣기
onRequestPermissionsResult
여기 내 경우가 있습니다 : 외부 저장소에 써야합니다.
먼저 권한이 있는지 확인합니다.
...
private static final int REQUEST_WRITE_STORAGE = 112;
...
boolean hasPermission = (ContextCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
if (!hasPermission) {
ActivityCompat.requestPermissions(parentActivity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_STORAGE);
}
그런 다음 사용자의 승인을 확인하십시오.
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case REQUEST_WRITE_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
//reload my activity with permission granted or use the features what required the permission
} else
{
Toast.makeText(parentActivity, "The app was not allowed to write to your storage. Hence, it cannot function properly. Please consider granting it this permission", Toast.LENGTH_LONG).show();
}
}
}
}