2016-07-25 2 views
1

하나의 프래그먼트가 포함 된 Activity가 있습니다. 이 같은Android onRequestPermissionsResult가 Activity에서만 호출되었지만 Fragment에서는 호출되지 않습니다.

ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_CONTACTS}, REQUEST_CODE_PERMISSION);

와 조각에서 내가 요청하고 카메라 권한 : 다음과 같이 나는 활동에서 접촉 권한을 요청하고

requestPermissions(new String[] {Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSION);

나는 조각과 모두 onRequestPermissionsResult 방법을 활동. 문제는 심지어 조각에서 허가를 요청해도 활동의 onRequestPermissionsResult이 호출된다는 것입니다. 프래그먼트의 onRequestPermissionsResult이 호출되지 않습니다 (그러나 액티비티에서 onRequestPermissionsResult을 제거하면 호출됩니다). 적절한 방법이 있습니까 onRequestPermissionsResult 방법이 있습니까?

+0

'슈퍼'에게 전화 했습니까? 당신의 활동에서 'onRequestPermissionsResult (...)'? – ridsatrio

+0

@ridsatrio 잊어 버렸습니다. 지금 시험해 보니 일했습니다 : D thanks :) –

답변

1

Activity의 메서드를 재정의 할 때는 super.onRequestPermissionsResult(...)으로 전화하십시오. 말했다

,이 수동으로 활동 내에서 가지고있는 Fragment들에게 통보하는 것입니다 해결하는 한 가지 다른 방법 :

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

    final List<Fragment> fragments = getSupportFragmentManager().getFragments(); 
    if (fragments != null) { 
     for (Fragment fragment : fragments) { 
      fragment.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     } 
    } 
} 

.. 그리고 당신의 조각이 requestCode 경우 적절한 조치를 수행하여 응답이 보낸 사람은 그들의 것입니다.