반응형

 

 

Permissions.class

public class Permissions {

    public static boolean hasPermissions(Context context, String... permissions) {
        if (context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }
        }
        return true;
    }
}

 

사용

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

	//사용하려는 퍼미션을 배열에 담아둔다.
    int PERMISSION_ALL = 1000;
    String[] PERMISSIONS = {
            Manifest.permission.CAMERA,
            android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
            android.Manifest.permission.READ_EXTERNAL_STORAGE,
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		
        //만들어놓은 util에서 퍼미션이있는지 물어본다.
        if(!Permissions.hasPermissions(this, PERMISSIONS)){
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        }

    }




    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (PERMISSION_ALL == requestCode){
          for (int i : grantResults){
          	  //허용
              if(i == PackageManager.PERMISSION_GRANTED){
                    Log.i(TAG,"## PERMISSION_GRANTED");
              }
			  //거부
              else {
                  Log.i(TAG,"## PERMISSION_DEN");
              }
          }
        }
    }
}
반응형

+ Recent posts