3

내 권한을 포함Android 6에 여러 권한을 추가하고 에뮬레이터에서 테스트하는 방법은 무엇입니까? 내가 자동으로 안드로이드 6.0과 안드로이드 M.에 대한 권한을 추가 할 수있는 응용 프로그램을 만드는 중이라서

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

나는 안드로이드 6.0 버전

public static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if(checkAndRequestPermissions()) { 
     Log.d ("TAG", "Permissions are granted"); 
    } 
} 

private boolean checkAndRequestPermissions() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     int permissionSTORAGE = ContextCompat.checkSelfPermission(this, 
       Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     int permissionRECORDAUDIO = ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO); 
     List<String> listPermissionsNeeded = new ArrayList<>(); 
     if (permissionSTORAGE != PackageManager.PERMISSION_GRANTED) { 
      listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     } 
     if (permissionRECORDAUDIO != PackageManager.PERMISSION_GRANTED) { 
      listPermissionsNeeded.add(Manifest.permission.RECORD_AUDIO); 
     } 
     if (!listPermissionsNeeded.isEmpty()) { 
      ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), REQUEST_ID_MULTIPLE_PERMISSIONS); 
      return false; 
     } 
     return true; 
    } 
    else 
     return true; 
}} 

I에 대한 권한을 추가하는 코드 아래 사용 위의 코드에는 두 가지 문제가 있습니다.

  1. 에뮬레이터 (Android M, SDK 24)에서 권한을 확인할 수 있습니까?
  2. 구현이 정확합니까? 실제 장치가 없으므로 위의 코드를 확인할 수 없습니다. 당신이 언급 한 것처럼 단지 ActivityCompat.requestPermissions(...) 전화의 모든 4 권한을 포함하고 함께 안드로이드 자동으로 페이지를
+0

확인 된 작업은 http://stackoverflow.com/questions/38141523/directory-creation-not-working-in-marshmallow-android/38141778#38141778 –

+0

에서 확인하십시오. https : // inthecheesefactory. com/blog/things-you-to-know-about-android-m-permission-developer-edition/ko - 에뮬레이터에 대해서는 모르겠지만 실제 장치에서 테스트했습니다. – Tasos

답변

2

제대로 내 코드를 읽어 보시기 바랍니다하고 필요

에 따라 수정합니다.

여러 권한을 확인하고 그 중 하나가 부여되지 않았는지 확인하는 도우미 메서드가 있습니다.

public static boolean hasPermissions(Context context, String... permissions) { 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
     for (String permission : permissions) { 
      if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

그런 다음 모든 권한을 보내십시오. 안드로이드는 필요한 것들만 요구할 것이다.

String[] PERMISSIONS = {Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE}; 

if(!hasPermissions(this, PERMISSIONS)){ 
    ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); 
} 
+0

'PERMISSION_ALL'이란 무엇입니까? – Jame

+0

PERMISSION_ALL은 요청 코드입니다. 인스턴스 변수 –

+0

을 정의하십시오. PERMISSION_ALL = 123; –

1

Google에서 제공하는 샘플 앱은 here on Github 샘플을 참조하십시오.

여러 사용 권한을 확인하는 방법은 코드 MainActivity을 자세히 확인하십시오.

희망이 있습니다.