2016-10-22 136 views
0

我对新的权限检查系统有疑问,因为我正在使用版本android 5.0.3到7.X(API-23和上级),我不明白检查权限系统是如何工作的。 manager.openCamera需要一个权限检查方法来做到这一点,我知道。 首先,我在一个类(而不是活动)中工作,在“这个”我需要获取上下文我但我不能使用获取上下文,因为它是为API 24 ...所以,我为什么我需要替换这个“这个”,我需要做其他的事情呢? 谢谢大家。Android检查权限

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继承。