仅在某些设备上需要振动权限

问题描述:

我正在测试使用NotificationManager发送振动通知的应用程序。目前,我的清单中没有振动权限。我明白需要拥有它,但是在没有获得许可的情况下,在设备之间看到一些奇怪的行为。仅在某些设备上需要振动权限

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

我主要在Galaxy S4上测试,即使没有设置权限,我也可以进行振动测试。它在Android 4.3上。我刚刚测试了三星Galaxy Nexus,它在尝试进行振动时产生运行时异常,表示我没有权限。 Nexus在Android 4.3上。

我明白我应该有权限,但为什么S4似乎并不关心它没有权限? S4股票ROM是否真的不关心权限?

这里曾发生内部异常,对于它的价值:

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) 

你应该包括这个权限。

我对Google Nexus 4没有任何问题进行了测试,但因为其他模型(如HUAWEY和BQ)需要它,所以我不得不放弃权限。

+1

我只是不明白为什么手机制造商会覆盖这样的标准Android权限的东西。这样做会得到什么? – 2014-08-29 12:15:55

+0

如果我们不想添加振动许可,我们应该在try-catch中包装我们的'NotificationManager'代码。检查[this](http://*.com/questions/13602190/java-lang-securityexception-requires-vibrate-permission-on-jelly-bean-4-2)以获取更多信息。显然这是Android 4.2中的某种错误 – 2016-09-22 04:52:12