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)
Po prostu nie rozumiem, dlaczego producent telefonu zastąpiłby standardowe uprawnienia systemu Android, takie jak ten. Co można zyskać, robiąc to? –
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 –