Android6.Permission 에 대한 주의 사항 요약
3931 단어 Android
장점
23세의 targetSdkVersion이 23세 이하의 상황에서 대응하지 못하게 하는 장점은 다음과 같다.
· 설치 시 프로그램의 허가가 필요합니다. 모두 허가됩니다.
tagetSdkVersion을 23으로 설정하면 응용 프로그램이 허용하지 않기 때문에 허가 대화상자를 표시하고 사용자의 허가를 받아야 합니다.
· targetSdkVersion을 향상시켜 고장 발생 방지
Permissions 에 대한 고려 사항
targetSdkVersion을 23 이하로 설정하더라도 compuileSdkVersion을 23으로 설정하면 Permission에 필요한 방법을 사용할 수 있다.
단, 아래 열거한 주의점은 다음과 같다.
①Context.checkSelfPermission
각 Permission의 라이센스 여부를 확인하는 방법인 checkSelfPermission(String perission)도 라이센스가 없을 때 진짜로 반환됩니다.
↓
23 미만인 경우 PermissionCheckercheckSelfPermission(Context context, String persion)을 사용하면 적절한 결과를 얻을 수 있습니다.
② onRequestPermissionsResult(..., int[]grantResults)의grantResults는 항상PERMMISSIONGRANNTED 회복
허가가 없을 때 사용자에게 허가 대화상자를 표시하고 '허가' 또는 '허가하지 않음' 의 결과를 선택하는 방법을 받아들이는 방법
23 미만이면 허가 대화상자에서 '허락하지 않음' 을 선택한 경우grantResults도 PERMMISSION을 선택할 수 있습니다GRANNTED로 돌아갑니다.
↓
23 미만의 경우 onRequestPermissions Result(...)내부①의 PermissionCheckercheckSelfPermission(...)를 참고하십시오.
라이센스를 선택한 경우 PermissionCheckercheckSelfPermission(...)진실로 돌아가도록 수정되었습니다.
(targetSdkVersion 23이면 적절한grantResult를 반환합니다.)
③ 라이센스 대화 상자에서 라이센스를 선택하면 응용 프로그램이 다시 시작됩니다.
RequestPermissions(String[]permissions, int requestCode)를 사용하여 라이센스 대화 상자를 표시한 후 라이센스되지 않은 Permission에 대해 [라이센스]를 선택하면 응용 프로그램이 다시 시작됩니다.
라이센스 변경 시 시스템 로그:
I/ActivityManager: Killing *** : Permission related app op changed
적용 -> 응용 프로그램 -> 객체 응용 프로그램의 권한 변경 라이센스 상태를 설정할 때도 마찬가지로 다시 시작합니다.그러나 라이센스 대화 상자에서 라이센스를 변경한 후에만 다시 시작합니다.
targetSdkVersion 23이면 재부팅되지 않습니다.
↓
허가 대화상자를 표시하지 않고 설정된 응용 프로그램의 화면을 보여 허가를 변경하는 방법도 있다.
응용 프로그램의 권한 화면으로 이동할 수 없습니다.
Java
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:あなたのアプリのパッケージ名"));
startActivity(intent);
④ 허용 대화 상자에서 스토리지 라이센스를 변경한 후 재부팅한 상태에서는 스토리지를 액세스할 수 없습니다.
③ Permission에 대한 스토리지 라이센스 대화 상자를 다시 시작합니다.
PermissionChecker.checkSelfPermission(...)진짜로 돌아가다
실제로 스토리지 라이센스가 필요한 Environmentge tExternal Storage Directory() 등의
File.canWrite()가 휴가를 반환합니다.
또 실제 방문 시 다음과 같은 예외를 토로한다.
W/System.err: java.io.IOException: open failed: EACCES (Permission denied)
W/System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
W/System.err: at libcore.io.Posix.open(Native Method)
W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err: at java.io.File.createNewFile(File.java:932)
W/System.err: ... 3 more
이 상태에서 멀티태스킹 화면 등을 통해 앱을 다시 시작하면 정상적으로 접근할 수 있다.
또 설정 프로그램에서 허가 상태를 변경한 후 시작하면 이런 현상이 일어나지 않는다.
(targetSdkVersion 23이면 재부팅되지 않으며 허용 대화 상자에서 선택하면 스토리지 디바이스에 정상적으로 액세스할 수 있습니다.
총결산
23 미만이면 일부 제한이 있는 것 같으니 그것에 따라 시행할 필요가 있다.
특히 ④의 경우 재가동 등 대응책을 안내해야 할 수도 있다.
참고 자료
Reference
이 문제에 관하여(Android6.Permission 에 대한 주의 사항 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Night___/items/8193725a54d42e87969f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
targetSdkVersion을 23 이하로 설정하더라도 compuileSdkVersion을 23으로 설정하면 Permission에 필요한 방법을 사용할 수 있다.
단, 아래 열거한 주의점은 다음과 같다.
①Context.checkSelfPermission
각 Permission의 라이센스 여부를 확인하는 방법인 checkSelfPermission(String perission)도 라이센스가 없을 때 진짜로 반환됩니다.
↓
23 미만인 경우 PermissionCheckercheckSelfPermission(Context context, String persion)을 사용하면 적절한 결과를 얻을 수 있습니다.
② onRequestPermissionsResult(..., int[]grantResults)의grantResults는 항상PERMMISSIONGRANNTED 회복
허가가 없을 때 사용자에게 허가 대화상자를 표시하고 '허가' 또는 '허가하지 않음' 의 결과를 선택하는 방법을 받아들이는 방법
23 미만이면 허가 대화상자에서 '허락하지 않음' 을 선택한 경우grantResults도 PERMMISSION을 선택할 수 있습니다GRANNTED로 돌아갑니다.
↓
23 미만의 경우 onRequestPermissions Result(...)내부①의 PermissionCheckercheckSelfPermission(...)를 참고하십시오.
라이센스를 선택한 경우 PermissionCheckercheckSelfPermission(...)진실로 돌아가도록 수정되었습니다.
(targetSdkVersion 23이면 적절한grantResult를 반환합니다.)
③ 라이센스 대화 상자에서 라이센스를 선택하면 응용 프로그램이 다시 시작됩니다.
RequestPermissions(String[]permissions, int requestCode)를 사용하여 라이센스 대화 상자를 표시한 후 라이센스되지 않은 Permission에 대해 [라이센스]를 선택하면 응용 프로그램이 다시 시작됩니다.
라이센스 변경 시 시스템 로그:
I/ActivityManager: Killing *** : Permission related app op changed
적용 -> 응용 프로그램 -> 객체 응용 프로그램의 권한 변경 라이센스 상태를 설정할 때도 마찬가지로 다시 시작합니다.그러나 라이센스 대화 상자에서 라이센스를 변경한 후에만 다시 시작합니다.
targetSdkVersion 23이면 재부팅되지 않습니다.
↓
허가 대화상자를 표시하지 않고 설정된 응용 프로그램의 화면을 보여 허가를 변경하는 방법도 있다.
응용 프로그램의 권한 화면으로 이동할 수 없습니다.
Java
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:あなたのアプリのパッケージ名"));
startActivity(intent);
④ 허용 대화 상자에서 스토리지 라이센스를 변경한 후 재부팅한 상태에서는 스토리지를 액세스할 수 없습니다.
③ Permission에 대한 스토리지 라이센스 대화 상자를 다시 시작합니다.
PermissionChecker.checkSelfPermission(...)진짜로 돌아가다
실제로 스토리지 라이센스가 필요한 Environmentge tExternal Storage Directory() 등의
File.canWrite()가 휴가를 반환합니다.
또 실제 방문 시 다음과 같은 예외를 토로한다.
W/System.err: java.io.IOException: open failed: EACCES (Permission denied)
W/System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
W/System.err: at libcore.io.Posix.open(Native Method)
W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err: at java.io.File.createNewFile(File.java:932)
W/System.err: ... 3 more
이 상태에서 멀티태스킹 화면 등을 통해 앱을 다시 시작하면 정상적으로 접근할 수 있다.
또 설정 프로그램에서 허가 상태를 변경한 후 시작하면 이런 현상이 일어나지 않는다.
(targetSdkVersion 23이면 재부팅되지 않으며 허용 대화 상자에서 선택하면 스토리지 디바이스에 정상적으로 액세스할 수 있습니다.
총결산
23 미만이면 일부 제한이 있는 것 같으니 그것에 따라 시행할 필요가 있다.
특히 ④의 경우 재가동 등 대응책을 안내해야 할 수도 있다.
참고 자료
Reference
이 문제에 관하여(Android6.Permission 에 대한 주의 사항 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Night___/items/8193725a54d42e87969f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Android6.Permission 에 대한 주의 사항 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Night___/items/8193725a54d42e87969f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)