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

6

我正在测试使用NotificationManager发送振动通知的应用程序。目前,我的清单中没有Vibrate权限。我了解需要此权限,但在没有该权限的设备之间看到一些奇怪的行为。

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

我主要在一款Galaxy S4上进行测试,即使没有设置权限,也可以通过它进行振动。它运行的是Android 4.3版本。我刚刚尝试了一下Samsung 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)
1个回答

6

您应该包含这个权限。

我在Google Nexus 4上测试没有问题,但是其他型号如华为和BQ需要它,因此我必须加入这个权限。


1
我就是不明白为什么手机制造商要覆盖标准的Android权限设置。这样做有什么好处呢? - Stealth Rabbi
如果我们不想添加振动权限,我们应该在 NotificationManager 代码中使用 try-catch 进行包装。查看 此链接 获取更多信息。显然这是 Android 4.2 中的某种错误。 - Bugs Happen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接