2017-03-13 35 views
-2

런타임에 사용자가 외부 저장 장치 쓰기 권한을 사용하도록 호출하려고합니다. 나는 아래의 코드를 사용했다. 실행 시간 권한 대화 상자를 보여줍니다. 허용 또는 거부를 클릭하면 onReqestPermissionResult (메서드 호출) 메서드가 호출되지 않습니다.onReqestPermissionResult가 Android 동적 액세스 권한에서 호출되지 않음

내가 무엇을해야합니까? 이에 onRequestPermissionsResult()를

ActivityCompat.requestPermissions(PermissionCheck.this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 

을 그리고 대체 :

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

으로 :

public class PermissionCheck extends Activity { 

    private static final String TAG = "PermissionCheck"; 

    private Fragment mFragment; 
    private Activity mActivity; 

    public PermissionCheck(Fragment fragment){ 
     mFragment = fragment; 
     mActivity = fragment.getActivity(); 
    } 

    public boolean isStoragePermissionGranted() { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(mActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
       return true; 
      } else { 
       ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
       return false; 
      } 
     } 
     else { 
      return true; 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
      Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]); 
     } 
    } 
} 
+0

PermissionCheck 활동이란 무엇입니까? onCreate 및 다른 라이프 사이클 메소드는 어디에 있습니까? UI는 어디에 있습니까? 왜 퍼미션을 위해서만'Activity'가 필요한가요? 실제로이 활동을 어떻게 부르고 있습니까? –

+0

이 활동을 호출하지 않습니다 ... super.onRequestPermissionsResult (requestCode, permissions, grantResults); 이 활동을 확장해야 ... 그 이유는 ... – Vji

답변

1

을 당신은 requestPermissions 다른 활동의 인스턴스를 전달하는, 그래서 에는이 호출되고 PermissionCheck에는 호출되지 않습니다. requestPermissions을 다음으로 변경하십시오.

ActivityCompat.requestPermissions(PermissionCheck.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
+0

오, 남자 ... 전 혼란 스러워요. 지금은 분명히 ... 감사합니다 남자 !!! – Vji

0

교체

@Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case 1: { 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Toast.makeText(getActivity(), "Permission is granted", Toast.LENGTH_LONG).show(); 

       } else { 
        Toast.makeText(getActivity(), "Please give your permission.", Toast.LENGTH_LONG).show(); 
       } 
       break; 
      } 
     } 
    }