francoisfds / BikeSharingHub

Shared bikes for Android
GNU General Public License v3.0
18 stars 10 forks source link

callback compatibility issue when initialing method #40

Open PSDroid2022 opened 2 years ago

PSDroid2022 commented 2 years ago

We confirm a callback compatibility issue which might threaten the robustness of your app and give a detailed suggestion for you.

In ''be.brunoparmentier.openbikesharing.app.activities.MapActivity", you super the framework API "<android.app.Activity: void onRequestPermissionsResult(int,java.lang.String[],int[])>" in "onRequestPermissionsResult" method as shown in following. But actually, this method is added in API level 23 (https://developer.android.google.cn/reference/android/app/Activity?hl=en#onRequestPermissionsResult(int,%20java.lang.String[],%20int[])).

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case REQUEST_LOC_PERMISSION_CODE:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    mooveToLocation();
                } else if(!ActivityCompat.shouldShowRequestPermissionRationale(this,
                        Manifest.permission.ACCESS_FINE_LOCATION)) {
                    Toast.makeText(this, getString(R.string.location_not_granted), Toast.LENGTH_LONG).show();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

So when the app try to initial related funtion on devices level 21 and 22, your app will run with an unpredictable results. So we suggest you add an "if(SDK_INT>22)" or change your app miniSDK from 21 to 23 to fix this potential issue.