2015-11-22 21 views
5

Natknąłem się na artykuł z serii Cheese Factory (google, ponieważ nie mogę opublikować więcej niż 2 linków z moją reputacją), który wyjaśnia, w jaki sposób obsłużyć nowy system uprawnień dla Androida Marshmallow. W artykule odwołuje się do Permissionsdispatcher library , który ma na celu zredukowanie kodu standardowego. Więc pobrałem demo biblioteki z GitHub, ale pojawia się błąd, który mówi, że MainActivityPermissionsDispatcher nie może zostać rozwiązany. Z tego, co rozumiem, należy wygenerować this class. Jak mogę go wygenerować, aby usunąć błąd?Jak mogę korzystać z biblioteki Permissionsdispatcher dla nowych uprawnień środowiska wykonawczego Android M?

MainActivity.java

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    // delegate the permission handling to generated method 
    // MainActivityPermissionsDispatcher cannot be resolved 
    MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); 
} 
+0

niech poprawić swoją reputację, to jest dobre pytanie –

Odpowiedz

3

Jestem programistą. Dziękujemy za korzystanie.

  1. Sprawdź, czy w ustawieniach IDE jest dozwolone przetwarzanie adnotacji.
  2. Powiedziałeś: "co jest rozwidleniem repozytorium PermissionsDispatcher", ale co masz na myśli? Rozwinąłeś repozytorium i uruchomiłeś moduł próbny?
+0

1. Gdzie znajduje się to w menu Ustawienia IDE? 2. tak – charlesfranciscodev

+0

https://www.jetbrains.com/idea/help/compiler-annotation-processors.html –

+0

Dzięki temu rozwiązuje problem. Próbka może teraz działać w urządzeniu wirtualnym. – charlesfranciscodev

1

jak opisano tutaj https://github.com/hotchemi/PermissionsDispatcher#must

Trzeba będzie dodać @RuntimePermissions adnotację do swojej działalności i @NeedsPermission adnotacji sposobu przynajmniej.

W swojej build.gradle dodać następujące:

buildscript { 
    dependencies { 
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7' 
    } 
} 

apply plugin: 'android-apt' 

dependencies { 
    compile 'com.github.hotchemi:permissionsdispatcher:[email protected]' 
    apt 'com.github.hotchemi:permissionsdispatcher-processor:1.2.1' 
} 

Wtyczka android-apt zajmie przetwarzania adnotacji. Po zbudowaniu projektu powinieneś móc używać wygenerowanej klasy.

+0

te adnotacje są już w kodzie, który jest widelec w [PermissionsDispatcher repo] (https://github.com/hotchemi/PermissionsDispatcher). Również po uruchomieniu aplikacji pojawia się następujący błąd: Błąd 'Nie udało się przechwycić migawki plików wejściowych dla zadania" mavenAndroidJavadocs "podczas sprawdzania aktualności. Zobacz szczegóły stacktrace. > Nie można znormalizować ścieżki do pliku "C: \ Users \ dev1 \ AppData \ Local \ Android \ sdk \ platforms \ android-4 \ android.jar; C: \ Users \ dev1 \ AppData \ Local \ Android \ sdk \ tools \ support \ adnotations.jar'. – charlesfranciscodev

+0

Wygląda na to, że używasz maven? Biblioteka PremissionDispatcher opiera się na gradle i używa apletu android-apt do przetwarzania adnotacji (zobacz edycję mojej odpowiedzi). – woley

+0

Dodałem linie wspomniane w edycji w PermissionsDispatcher \ build.gradle, ale pojawia się ten błąd. 'Wtyczka android lub biblioteka Android musi być zastosowana do projektu' Zawiesza się w następującej linii: 'zastosuj wtyczkę: 'android-apt''. – charlesfranciscodev