2014-08-29 15 views
6

Testuję moją aplikację, która używa Powiadomienia, aby wysłać powiadomienie, które powoduje wibrację. Obecnie nie mam uprawnienia Wibracje w moim manifeście. Rozumiem potrzebę jej posiadania, ale widzę dziwne zachowanie między urządzeniami bez pozwolenia.Uprawnienia do wibracji wymagane tylko na niektórych urządzeniach

<uses-permission android:name="android.permission.VIBRATE"></uses-permission> 

Testuję głównie na Galaxy S4, który pozwala mi wykonywać wibracje, nawet bez posiadania pozwolenia. Działa na Androidzie 4.3. Właśnie testowałem z Samsung Galaxy Nexus, który wygenerował wyjątek Runtime podczas próby wibracji, wskazując, że nie mam pozwolenia. Nexus działa w systemie Android 4.3.

Rozumiem, że powinienem mieć pozwolenie, ale dlaczego S4 nie wydawało się troszczyć o to, że brakowało mu pozwolenia? Czy to możliwe, że ROM ROM S4 naprawdę nie dba o uprawnienia?

Tu był wewnętrzny wyjątek generowane na co warto:

Caused by: java.lang.SecurityException: Requires VIBRATE permission 
     at android.os.Parcel.readException(Parcel.java:1431) 
     at android.os.Parcel.readException(Parcel.java:1385) 
     at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:320) 
     at android.app.NotificationManager.notify(NotificationManager.java:136) 
     at android.app.NotificationManager.notify(NotificationManager.java:109) 

Odpowiedz

6

powinien zawierać to uprawnienie.

Przetestowałem bezproblemowo na Google Nexus 4, ale musiałem wprowadzić pozwolenie, ponieważ potrzebują tego inne modele, takie jak HUAWEY i BQ.

+1

Po prostu nie rozumiem, dlaczego producent telefonu zastąpiłby standardowe uprawnienia systemu Android, takie jak ten. Co można zyskać, robiąc to? –

+0

Powinniśmy zawinąć nasz kod 'NotificationManager' w try-catch, jeśli nie chcemy dodawać uprawnień do wibracji. Sprawdź [to] (http://stackoverflow.com/questions/13602190/java-lang-securityexception-requires-vibrate-permission-on-jelly-bean 4-2), aby uzyskać więcej informacji. Najwyraźniej był to jakiś błąd w systemie Android 4.2 –

Powiązane problemy