@@ -34,6 +34,11 @@ private static boolean needsStorageReadPermission(Activity activity) {
3434 * @return
3535 */
3636 public static boolean needsCameraPermission (Activity activity ) {
37+ // Android only introduced the runtime permission system in Marshmallow (Android 6.0)
38+ if (Build .VERSION .SDK_INT < Build .VERSION_CODES .M ) {
39+ return false ;
40+ }
41+
3742 return ContextCompat .checkSelfPermission (activity , android .Manifest .permission .CAMERA ) != PackageManager .PERMISSION_GRANTED ;
3843 }
3944
@@ -44,14 +49,21 @@ public static boolean needsCameraPermission(Activity activity) {
4449 * @param activity
4550 * @param requestCode
4651 */
47- public static void requestStorageReadPermission (Activity activity , int requestCode ) {
52+ public static void requestStorageReadPermission (CatimaAppCompatActivity activity , int requestCode ) {
4853 String [] permissions = new String []{ android .Manifest .permission .READ_EXTERNAL_STORAGE };
4954 int [] mockedResults = new int []{ PackageManager .PERMISSION_GRANTED };
5055
5156 if (needsStorageReadPermission (activity )) {
5257 ActivityCompat .requestPermissions (activity , permissions , requestCode );
5358 } else {
54- activity .onRequestPermissionsResult (requestCode , permissions , mockedResults );
59+ // FIXME: This points to onMockedRequestPermissionResult instead of to
60+ // onRequestPermissionResult because onRequestPermissionResult was only introduced in
61+ // Android 6.0 (SDK 23) and we and to support Android 5.0 (SDK 21) too.
62+ //
63+ // When minSdk becomes 23, this should point to onRequestPermissionResult directly and
64+ // the activity input variable should be changed from CatimaAppCompatActivity to
65+ // Activity.
66+ activity .onMockedRequestPermissionsResult (requestCode , permissions , mockedResults );
5567 }
5668 }
5769
@@ -62,14 +74,21 @@ public static void requestStorageReadPermission(Activity activity, int requestCo
6274 * @param activity
6375 * @param requestCode
6476 */
65- public static void requestCameraPermission (Activity activity , int requestCode ) {
77+ public static void requestCameraPermission (CatimaAppCompatActivity activity , int requestCode ) {
6678 String [] permissions = new String []{ Manifest .permission .CAMERA };
6779 int [] mockedResults = new int []{ PackageManager .PERMISSION_GRANTED };
6880
6981 if (needsCameraPermission (activity )) {
7082 ActivityCompat .requestPermissions (activity , permissions , requestCode );
7183 } else {
72- activity .onRequestPermissionsResult (requestCode , permissions , mockedResults );
84+ // FIXME: This points to onMockedRequestPermissionResult instead of to
85+ // onRequestPermissionResult because onRequestPermissionResult was only introduced in
86+ // Android 6.0 (SDK 23) and we and to support Android 5.0 (SDK 21) too.
87+ //
88+ // When minSdk becomes 23, this should point to onRequestPermissionResult directly and
89+ // the activity input variable should be changed from CatimaAppCompatActivity to
90+ // Activity.
91+ activity .onMockedRequestPermissionsResult (requestCode , permissions , mockedResults );
7392 }
7493 }
7594}
0 commit comments