仅在某些设备上需要振动权限
问题描述:
我正在测试使用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)需要它,所以我不得不放弃权限。
我只是不明白为什么手机制造商会覆盖这样的标准Android权限的东西。这样做会得到什么? – 2014-08-29 12:15:55
如果我们不想添加振动许可,我们应该在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