2019. 12. 23. 12:13ㆍAndroid

참고 : https://developers-kr.googleblog.com/2015/08/android-60-sdk.html
안드로이드 마시멜로: 안드로이드 6.0 SDK 와 마지막 개발자 프리뷰
By Jamal Eason , Product Manager, Android 말랑 말랑한 마시멜로를 싫어하는 분이 있을까요? 분명히 말씀드리자면 안드로이드 팀은 마시멜로를 정말 좋아합니다. 5월 구글 I/O 에서 안드로이드 M 개발자 프리뷰 ...
developers-kr.googleblog.com
안드로이드 앱 여러 개 권한 요청
앱을 설치하고 처음 실행시 여러 개의 권한 요청 방법. requestPermissions 함수를 사용하는데, 두번째 인자인 퍼미션 목록은 String Array 타입이다. 즉 여러 개의 권한을 한꺼번에 요청 가능. 필요한 권한 목록을 ArrayList에 저장하고, 목록이 완성되면 requestPermissions을 이용해 권한…
ahnbk.com
AndroidManifest.xml에서 다음과 같이 targetSdkVersion을 23(마시멜로) 이상으로 하게 되면 권한 부여 방식이 바뀌게 됩니다.
기존에는 설치 시 권한 동의를 얻은 후 설치가 진행되었지만,
마시멜로 이상부터는 구동 중에 사용자에게 권한 허용 여부를 물어서 앱의 권한을 획득하거나 설정 - 앱 - 권한에 들어가서 일일이 허용으로 체크해줘야 합니다.
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="23"/>
권한을 획득하지 않고 권한이 필요한 동작을 하게 되면 SecurityException 에러와 함께 앱이 종료됩니다.
사용자에게 권한 승인 여부를 묻는 방법은 다음과 같습니다.
안드로이드
public class MainActivity extends Activity{
final int REQUEST_CAMERA = 1001;
final int REQUEST_MULTI = 1010;
ArrayList<String> permissions = new ArrayList<String>();
boolean checkPermission(String str){
int permissionCheck = ContextCompat.checkPermission(str);
if(permissionCheck!=PackageManager.PERMISSION_GRANTED)
return true;
return false;
}
@Override
protected void onCreate(){
}
@JavascriptInterface
public void grantAuthority(String str){
permissions.clear();
switch(str){
case "CAMERA" : {
if(checkPermission(Manifest.permission.CAMERA))
permissions.add(Manifest.permission.CAMERA);
if(permissions.size() > 0){
String[] reqPermissionArray = new String[permissions.size()];
reqPermissionArray = permissions.toArray(reqPermissionArray);
requestPermissions(reqPermissionArray, REQUEST_CAMERA);
}else{
//권한이 모두 승인되어 있을 경우 처리
}
break;
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){
switch(requestCode){
case REQUEST_CAMERA : {
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "권한이 허용되었습니다.", Toast.LENGTH_LONG).show();
//사용자가 권한을 허용하지 않았을 경우 처리
}else{
Toast.makeText(this, "권한이 허용되었습니다.", Toast.LENGTH_LONG).show();
//사용자가 권한을 허용하였을 경우 처리
}
return;
}
case REQUEST_MULTI : {
int grantSize = grantResults.length;
boolean isTrue = true;
for(int i=0; i<grantSize; i++)
if(grantResults[i] != PackageManager.PERMISSION_GRANTED){
isTrue = false;
break;
}
if(grantResults.length > 0 && isTrue){
Toast.makeText(this, "권한이 허용되었습니다.", Toast.LENGTH_LONG).show();
//사용자가 권한을 허용하지 않았을 경우 처리
}else{
Toast.makeText(this, "권한이 허용되었습니다.", Toast.LENGTH_LONG).show();
//사용자가 권한을 허용하였을 경우 처리
}
return;
}
}
}
}
자바스크립트
window.android.grantAuthority("CAMERA");
'Android' 카테고리의 다른 글
[ Android ] 안드로이드 코르도바 뒤로가기 처리 (0) | 2021.02.25 |
---|---|
[ Android ] 안드로이드 웹뷰 net::ERR_CACHE_MISS 해결 방법 (0) | 2019.12.23 |
[ Android ] a webview method was called on thread 'javabridge' (0) | 2019.12.19 |
[ Android ] 앱의 WebView SSL 오류 핸들러 알림 해결 방법 (0) | 2019.12.09 |
[ Android ] 자바스크립트 인터페이스 삽입 취약점 문제 해결 하기 (0) | 2019.12.06 |