2016-10-10 2 views
0

타사에서 사용할 수있는 SDK (.aar)를 개발 중입니다. 샘플 응용 프로그램에서 aar를 사용할 때 응용 프로그램이 카메라 권한을 묻지 않는다는 것을 알 수 있습니다. 나는 AAR을 열고 그 manifest.xm을 볼 때, 아래에 포함되어 카메라가 사람이 샘플 응용 프로그램을 설치할 때이 다가오고되지 않는 이유를 말해 줄 수 필요한 허가로 존재Android 응용 프로그램에서 카메라 권한을 요청하지 않습니다.

<!-- WRITE_EXTERNAL_STORAGE is needed because we are storing there the config files of KM --> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.read_external_storage" /> 
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" /> 
<uses-permission android:name="android.permission.CAMERA" /> 

<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
<uses-feature android:name="android.hardware.sensor.accelerometer" /> 

입니다.

+0

어디에서 "올라오고 싶습니까?" – CommonsWare

+0

은 Android 6.0이 장착 된 기기에 설치하기 때문에 문제가되지 않습니까? – NecipAllef

+0

수동으로 apk를 휴대 전화에 설치하고 설치하려고하면 응용 프로그램에서 사용하는 녹음 오디오와 같은 기능 목록이 나타나 스토리지를 수정하지만 카메라의 흔적은 없습니다. 나는 안드로이드 버전 4.4.4를 사용하고있다. – Sid

답변

2

Android 6.0부터 런타임시 퍼미션을 요청해야하므로 설치시 사용자에게 메시지가 표시되지 않습니다.

public boolean permissionsGranted() { 

    boolean allPermissionsGranted = true; 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { 
     boolean hasWriteExternalPermission = (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); 
     boolean hasReadExternalPermission = (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); 
     boolean hasCameraPermission = (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED); 
     if (!hasWriteExternalPermission || !hasReadExternalPermission || !hasCameraPermission) { 
      allPermissionsGranted = false; 
     } 
    } 
    return allPermissionsGranted; 
} 

이 permissionsGranted() 메소드가

String[] permissions = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE}; 
         ActivityCompat.requestPermissions(this, permissions, 1); 

false를 반환하는 경우 내가 요청을하는 방법입니다 그리고 당신은 오버라이드 (override) 할 필요가 : 여기

https://developer.android.com/training/permissions/requesting.html

+0

나는 안드로이드를 사용하지 않고있다. 12. – Sid

0

내가 권한을 확인하는 방법입니다 아래 onRequestPermissionsResult 메소드는 내가 가지고있는 것입니다. 해당 사용자 권한을 사용할 수 있도록 그럼 내가 설정 활동을 시작하면 사용자가 다시 물어 보지 않을 그리 고 경우

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 1: { 
      boolean startActivity = true; 
      for (int i = 0; i < grantResults.length; i++) { 
       if (grantResults.length > 0 && grantResults[i] != PackageManager.PERMISSION_GRANTED) { 
        String permission = permissions[i]; 
        boolean showRationale = shouldShowRequestPermissionRationale(permission); 
        if (!showRationale) { 
         Intent intent = new Intent(); 
         intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
         Uri uri = Uri.fromParts("package", getActivity().getPackageName(), null); 
         intent.setData(uri); 
         startActivityWithIntent(intent); 
         Toast.makeText(this, "Enable required permissions", Toast.LENGTH_LONG).show(); 
         startActivity = false; 
         break; 
        } else { 
         Toast.makeText(this, "Enable required permissions", Toast.LENGTH_LONG).show(); 
         break; 
        } 
       } 
      } 
      if(startActivity) { 
       getActivity().finish(); 
       startActivityWithIntent(getIntent()); 
      } 
     } 
    } 
} 

public void startActivityWithIntent(Intent intent){ 
    startActivity(intent); 
} 

showRationale 확인하는 것입니다.

더 명확하게 알고 싶다면

+0

권한을 확인할 필요가 없다. 왜 내 매니페스트에 카메라 권한이 있는지 묻는 메시지가 표시되지 않는다. – Sid

+0

아래의 내용은 marshmallow가 사용 권한을 요구하지 않아야하며, 사용 권한은 marshmallow 이상에서만 요구됩니다. 아마 카메라를 열고 싶어? 당신의 코드를 볼 수 있습니까? – upile

관련 문제