canelmas / let

Annotation based simple API flavored with AOP to handle new Android runtime permission model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Let crash on M devices (and N devices)

afaucogney opened this issue · comments

I get the same issue getAnnotation(java.lang.class) on a null object reference as posted in this issue

https://code.google.com/p/android/issues/detail?id=203109&q=permission&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&num=500
Code is here:

@AskPermission({Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION})
public void onEvent(NewTastingEvent event) {
    // Si pas d'internet
    if (MilleZimU.getInstance().isOnline()) {

        // Si app trop vielle
        if (AppManager.getInstance().isAbleToWork()) {

            // Si connecté
            if (MilleZimU.getInstance().getUserInstance() != null) {
                // Si degust pas finie


                DateTime thirtyMinAgo = DateTime.now().minusMinutes(30);
                if (getUser().hasIncompletedVoucher(thirtyMinAgo) && getUser().getOptions().getRetrieve().getStatus() == UserOption.ENABLE) {
                    TastingVoucher incompleteVoucher = getUser().getUncompletedVoucher(thirtyMinAgo);
                    new UncompletedTastingDialog(this, incompleteVoucher.id).show();
                }
                // Si encore des coupon
                else {
                    if (MilleZimU.getInstance().getUserInstance().hasValidVoucher() > 0 || getUser().getOptions().getFree().getStatus() == UserOption.ENABLE) {
                        // Si Permission
                        // Attention ordre important
                        startPhotoActivity();
                        EventBus.getDefault().post(new PrepareVoucherEvent(MilleZimU.getInstance().getUserInstance().getClosestValidVoucher()));
                    }
                    // Si Pas de coupon
                    else
                        new UnpaidedTastingStartDialog(this).show();
                }
            }
            // Si pas connecté
            else {
                new UnloggedTastingStartDialog(this).show();
                // Si essai

                // Si enregistrement
            }
        } else {
            AppManager.getInstance().impactVersionChange(this);
        }
    } else {
        new InternetLessDialog(this).show();
    }


}

public void startPhotoActivity() {
    Intent i = new Intent(this, NavigationActivity.class);
    startActivity(i);
    finish();
}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    Let.handle(this, requestCode, permissions, grantResults);
}

@Override
public void onShowPermissionRationale(List<String> permissionList, RuntimePermissionRequest permissionRequest) {
    new PermissionGrantingDialog(HomeActivity.this, "Gestion des permissions", "MilleZimU a besoin de la fonction STOCKAGE (sauvegarde du compte), APPAREIL PHOTO (enregistrement de l'étiquette) et POSITION (lieu de dégustation) pour pouvoir continuer. Veuillez accepter les demandes qui suivent", permissionRequest).show();
}

@Override
public void onPermissionDenied(List<DeniedPermission> deniedPermissionList) {
}

This is working fine on:

  • Android L devices
  • Android M emulator

This failed on Nexus 5 on Android M

Are you using 0.1.10?

possible duplicate #5