【问题标题】:Vibrate permission required only on some devices仅在某些设备上需要振动权限
【发布时间】:2014-10-23 10:43:44
【问题描述】:

我正在测试我的应用程序,它使用 NotificationManager 发送一个振动通知。目前,我的清单中没有振动权限。我知道有必要拥有它,但是在没有获得许可的情况下,我发现设备之间出现了一些奇怪的行为。

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

我主要在 Galaxy S4 上进行测试,它允许我进行振动,即使没有设置权限。它在安卓 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)

【问题讨论】:

    标签: android android-permissions vibration galaxy-nexus


    【解决方案1】:

    您应该包含此权限。

    我在 Google Nexus 4 上测试没有问题,但我必须获得许可,因为华为和 BQ 等其他型号需要它。

    【讨论】:

    • 我只是不明白为什么手机制造商会覆盖这样的标准 Android 权限。这样做有什么好处?
    • 如果我们不想添加振动权限,我们应该将 NotificationManager 代码包装在 try-catch 中。检查this 了解更多信息。显然这是 Android 4.2 中的某种错误
    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2014-01-08
    相关资源
    最近更新 更多