2014-08-29 45 views
6

我正在測試使用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) 

回答

6

你應該包括這個權限。

我對Google Nexus 4沒有任何問題進行了測試,但因爲其他模型(如HUAWEY和BQ)需要它,所以我不得不放棄權限。

+1

我只是不明白爲什麼手機制造商會覆蓋這樣的標準Android權限的東西。這樣做會得到什麼? – 2014-08-29 12:15:55

+0

如果我們不想添加振動許可,我們應該在try-catch中包裝我們的'NotificationManager'代碼。檢查[this](http://stackoverflow.com/questions/13602190/java-lang-securityexception-requires-vibrate-permission-on-jelly-bean-4-2)以獲取更多信息。顯然這是Android 4.2中的某種錯誤 – 2016-09-22 04:52:12

相關問題