2016-10-22 5 views
0

У меня есть сомнения в новой системе проверки разрешений из-за того, что я работаю с версиями android 5.0.3 до 7.X (API-23 и выше), и я не понимаю, как работает система разрешений проверки , manager.openCamera нуждается в методе проверки разрешений, чтобы это сработало, я знаю. Прежде всего я работаю в классе (не в деятельности), а в «этом» мне нужно получить контекст, но я не могу использовать контекст get, потому что он для api 24 ... Итак, для чего я нужно заменить это «это», и мне нужно сделать что-то еще? Спасибо вам всем.Android check разрешения

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
    // TODO: Consider calling 
    // ActivityCompat#requestPermissions 
    // here to request the missing permissions, and then overriding 
    // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
    //           int[] grantResults) 
    // to handle the case where the user grants the permission. See the documentation 
    // for ActivityCompat#requestPermissions for more details. 
    return; 
} 
manager.openCamera(cameraId, mStateCallback, backgroundHandler); 

ответ

0

Вы можете передать контекст в конструкторе этого класса, хранить его в переменной-члена, а затем заменить «это» с этой переменной-члена (или вы могли бы просто передать его в качестве аргумента метода где вы запускают код).

Но для того, чтобы запросить необходимые вам разрешения и действия, вместо того, чтобы «просто» передать контекст, вы можете передать действие, и таким образом вы можете использовать эту активность для вызова как checkSelfPermission, так и requestPermissions.

Теперь проблема в следующем: как вы справитесь с ответом пользователя? Вы должны реализовать метод onRequestPermissionsResult внутри того же самого действия. Если какое-либо действие должно быть в состоянии справиться с этим, создайте класс BaseActivity (который наследуется от Activity) и переопределите этот метод внутри BaseActivity, каждое другое действие должно наследовать от этого BaseActivity.