2016-07-07 3 views
0

Android 앱에 대한 모든 권한을 할당하는 가장 쉽고/가장 빠른 방법은 무엇입니까?android 앱에 대한 모든 권한 설정

이유는 다음과 같습니다. Google은 전경 기기에서 실행되는 유일한 앱인 Android 플러그인 PC 용 독점 앱을 개발 중입니다. 장치에서 중단없는 업데이트를 계획하고 있으므로 처음 설치하는 동안 장치에 대한 모든 사용 권한을 할당하려고합니다.

+1

공급 업체이므로이 모든 것을 요청하거나 다른 모든 사용 권한을 부여하는 새 권한을 부여하십시오. – Shark

+1

[안드로이드 : 모든 사용 권한을 설정하는 방법?] (http://stackoverflow.com/questions/7633639/android-how-to-set-all-uses-permission) –

+0

@Shark - 가능한가요? 다른 모든 권한을 부여하는 새로운 권한을 어떻게 만들 수 있습니까? – jay

답변

1

매니페스트 파일의 모든 권한을 수동으로 부여하는 것이 좋습니다. link에는 Android 앱에 필요한 모든 권한이 있습니다.

0

최근 마쉬멜로 (Marshmallow) 버전에서 런타임에 요청 권한을 제공 한 안드로이드가 있습니다. 그런 다음

private void checkPermissionsAtOnce(){ 

    List<String> permissionsNeeded = new ArrayList<>(); 

    final List<String> permissionsList = new ArrayList<>(); 
    if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION)) 
     permissionsNeeded.add(getString(R.string.gps)); 
    if(!addPermission(permissionsList, Manifest.permission.SEND_SMS)) 
     permissionsNeeded.add(getString(R.string.send_sms)); 
    if (!addPermission(permissionsList, Manifest.permission.WRITE_EXTERNAL_STORAGE)) 
     permissionsNeeded.add(getString(R.string.write_external_storage)); 
    if(!addPermission(permissionsList, Manifest.permission.READ_PHONE_STATE)) 
     permissionsNeeded.add(getString(R.string.read_phone_state)); 
    if(!addPermission(permissionsList, Manifest.permission.CAMERA)) 
     permissionsNeeded.add(getString(R.string.use_camera)); 

    if (permissionsList.size() > 0) { 
     if (permissionsNeeded.size() > 0) { 
      String message = getString(R.string.grad_access_to) + permissionsNeeded.get(0); 
      for (int i = 1; i < permissionsNeeded.size(); i++) 
       message = message + ", " + permissionsNeeded.get(i); 
      showMessageOKCancel(message, 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          ActivityCompat.requestPermissions(MainActivity.this,permissionsList.toArray(new String[permissionsList.size()]), 
            REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); 
         } 
        }); 
      return; 
     } 
     ActivityCompat.requestPermissions(MainActivity.this, permissionsList.toArray(new String[permissionsList.size()]), 
       REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); 
     return; 
    } 

} 

private void showMessageOKCancel(String message, DialogInterface.OnClickListener listener){ 
    new AlertDialog.Builder(MainActivity.this) 
      .setMessage(message) 
      .setPositiveButton(R.string.ok, listener) 
      .setNegativeButton(R.string.cancel, null) 
      .create() 
      .show(); 
} 


private boolean addPermission(List<String> permissionsList, String permission) { 
    if (ContextCompat.checkSelfPermission(MainActivity.this,permission) != PackageManager.PERMISSION_GRANTED) { 
     permissionsList.add(permission); 
     if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) 
      return false; 
    } 
    return true; 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    switch (requestCode) { 
     case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: 
     { 
      Map<String, Integer> perms = new HashMap<>(); 
      perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED); 
      perms.put(Manifest.permission.WRITE_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED); 
      perms.put(Manifest.permission.SEND_SMS, PackageManager.PERMISSION_GRANTED); 
      perms.put(Manifest.permission.READ_PHONE_STATE, PackageManager.PERMISSION_GRANTED); 

      for (int i = 0; i < permissions.length; i++) 
       perms.put(permissions[i], grantResults[i]); 

      if(perms.get(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED){ 
       permissionPhoneStateGranted = true; 
      } 

      /* if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED 
        && perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED 
        && perms.get(Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED 
        && perms.get(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED){ 

      }*/ 
     } 
     break; 
     case REQUEST_CODE_ASK_PERMISSIONS_FOR_PHONE_STATE: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // Permission Granted 
       permissionPhoneStateGranted = true; 

      } else { 
       // Permission Denied 
       permissionPhoneStateGranted = false; 
      } 
      break; 

     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 

당신이 취할 수있는

@Override 
protected void onStart() { 
    super.onStart(); 
    checkPermissionsAtOnce(); 
} 

: 앱이 처음으로 시작 그래서 빨리 당신은 당신이 할 수있는 활동에 app.So에 필요한 사용자의 권한을 요청할 수 있습니다 이 샘플을 참조로 사용하고 응용 프로그램에 구현하십시오. 도움이 되었으면 좋겠다 ..

관련 문제