2017-04-13 8 views
0

나는 ExportPlus 클래스 인 ExportDialog가 extends AlertDialog이고 implements ActivityCompat.OnRequestPermissionsResultCallback입니다. 나는 또한뿐만 아니라 매니페스트에 포함되어onRequestPermissionsResult가 AlertDialog 클래스에서 호출되지 않습니다.

ActivityCompat.requestPermissions(getOwnerActivity(), 
        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
        MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); 

권한을 호출하여 ExportDialog 클래스 내에서 권한을 요청하고 있습니다.

그러나 ActivityCompat.requestPermissions이 호출되면 onRequestPermissionsResult가 권한 요청의 결과와 함께 호출되지 않습니다.

에뮬레이터에서 테스트 할 때 사용 권한 요청이 수행 중이며 사용 권한 요청을 성공적으로 사용하거나 거부 할 수 있습니다. onRequestPermissionResult 내의 코드가 결코 호출되지 않는다는 것입니다.

this과 같은 게시물 몇 개를 확인했는데 내 수업이 AlertDialog를 확장하므로이 문제에 도움이되지 않습니다. onRequestPermissionResult에 대한

if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(getOwnerActivity(), 
       new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
       MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); 
     return false; 
    } 

코드 : 요청 허가

코드 클래스 선언의

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: { 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       exportCategory(); 
      } else { 
       Toast.makeText(getContext(), "Export functionality can't be carried out.", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 

코드 (CustomDialog는에 AlertDialog 확장) :

public class ExportDialog extends CustomDialog implements ActivityCompat.OnRequestPermissionsResultCallback { ... } 

이 주셔서 감사합니다 미리 도움을 청하십시오!

+2

onRequestPermissionsResult 메소드는 호출 된 '부모 (활동)'에서만 실행됩니다. – sunita

답변

1

당신은 경고 대화 상자에 넣을 수 없습니다. 대신 대화 상자를 생성 한 활동으로 이동해야합니다.

나는 exportCategory()이 무엇을해야할지 모르지만 대화 상자에서 public static으로 만들거나 다른 정적 클래스로 옮긴 다음 활동에서 호출 할 수 있습니다.

의 기능이 알림 대화 상자의 개체에 종속 된 경우 활동의 알림 대화 상자에 대한 참조를 누른 다음 해당 알림 대화 상자 인스턴스 (exportCategory())를 호출해야합니다.

+0

아미르 감사합니다! 그 트릭을 했어! –