2014-08-29 7 views
6

Я тестирую свое приложение, которое использует NotificationManager для отправки уведомления, которое производит вибрацию. В настоящее время у меня нет разрешения Вибрации в моем манифесте. Я понимаю необходимость иметь его, но вижу некоторые странные поведения между устройствами без разрешения.Разрешение вибрации требуется только на некоторых устройствах

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

я в основном тест на Galaxy S4, который позволяет мне делать вибрацию, даже не имея набор разрешений. Это на Android 4.3. Я только что протестировал с Samsung Galaxy Nexus, который генерировал исключение Runtime при попытке сделать вибрацию, указав, что у меня нет разрешения. Nexus находится на Android 4.3.

Я понимаю, что у меня должно быть разрешение, но почему S4, похоже, не заботится о том, чтобы у него не было разрешения? Возможно ли, что ПЗУ S4 действительно не заботится о разрешениях?

Здесь было внутреннее исключение генерируется, для чего это стоит:

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) 

ответ

6

Вы должны включить это разрешение.

Я протестировал без проблем для Google Nexus 4, но мне пришлось разрешить это разрешение, потому что для этого нужны другие модели, такие как HUAWEY и BQ.

+1

Я просто не понимаю, почему производитель телефона будет переопределять стандартные материалы для Android, подобные этому. Что нужно сделать, сделав это? –

+0

Мы должны обернуть наш код «NotificationManager» в try-catch, если мы не хотим добавлять виброзвонок. Проверьте [this] (http://stackoverflow.com/questions/13602190/java-lang-securityexception-requires-vibrate-permission-on-jelly-bean-4-2) для получения дополнительной информации. По-видимому, это была какая-то ошибка в Android 4.2 –