[android] runtime permission

iOS에서는 초기부터 사용하던 기능인데, 안드로이드는 6.0 마시멜로우부터 지원한다.

 

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

이 기능이 필요하다면, 필요한 시기에 이렇게 호출하면 된다.

 

private void requestPermission()
{
  // 설명: http://googledevkr.blogspot.kr/2015/09/android60runtimepermission.html
  // 마시멜로우 이상
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
  {
    // 권학을 획득하지 않았다면
    if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)
    {
      // 권한 요청
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 123);
    }
    else
      doSomething();
  }
  else
    doSomething();
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
  super.onRequestPermissionsResult(requestCode, permissions, grantResults);

  for (int i = 0; i < permissions.length; i++)
  {
    String p = permissions[i];
    if (p.equals(Manifest.permission.READ_PHONE_STATE) && grantResults[i] == PackageManager.PERMISSION_GRANTED)
      doSomething();
  }
}

private void doSomething()
{
  // do something
}

가장 단순하게 했더니 이렇게 되더라.

 

http://googledevkr.blogspot.kr/2015/09/android60runtimepermission.html 에 가면 더 자세한 정보가 있다.