0

バイブレーターが搭載されていない一部のデバイスで問題が発生しています。ユーザーがアプリケーションにある PreferenceActivity アクティビティ クラスからアプリケーションでバイブレーターを有効にするとクラッシュします。「Acer Iconia Tablet A110 Android バージョン: 4.1.2」などのデバイスでこの問題に直面しています。

これは私が使用している通知ヘルパーです:

public void createNotification() {
        SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(mContext);
        Boolean enableNotifications = preference.getBoolean("Enable_Notifications", true);
        if(enableNotifications){
            //get the notification manager
            mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
            //create the notification
            mNotification = new Notification();

//          mNotification.defaults = Notification.DEFAULT_ALL;
            mNotification.icon = mIcon;

            Boolean vibrateNotifications = preference.getBoolean("Vibrate_Notifications", true);
            if(vibrateNotifications){
                mNotification.defaults |= Notification.DEFAULT_VIBRATE;
            }
            Boolean toggleLedNotifications = preference.getBoolean("Toggle_Led_Notifications", true);
            if(toggleLedNotifications){
                mNotification.defaults |= Notification.DEFAULT_LIGHTS;

                mNotification.ledARGB = Color.RED;
                mNotification.flags = Notification.FLAG_SHOW_LIGHTS;
                mNotification.ledOnMS = 1000; 
                mNotification.ledOffMS = 1000; 
            }

            mNotification.tickerText = mTickerText;
            if (mWhen > 0) {
                mNotification.when = System.currentTimeMillis();
            }
            mNotification.flags |= Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL; //Notification.FLAG_ONGOING_EVENT; make this notification appear in the 'Ongoing events' section

            Boolean toggleSoundNotifications = preference.getBoolean("Toggle_Sound_Notifications", true);
            if(toggleSoundNotifications){
                String strRingtonePreference;
                Boolean defaultAppNotificationsTone = preference.getBoolean("Default_App_Notifications_Tone", false);
//              if(defaultAppNotificationsTone){
//                  strRingtonePreference = "android.resource://com.www.www/raw/notification_short";
//              }else{
                    strRingtonePreference = preference.getString("List_Ringtones", "DEFAULT_SOUND"); 
//              }
                if(strRingtonePreference.equalsIgnoreCase("DEFAULT_SOUND")){
                    mNotification.defaults |= Notification.DEFAULT_SOUND;
                }
                mNotification.sound = Uri.parse(strRingtonePreference);
            }

            //you have to set a PendingIntent on a notification to tell the system what you want it to do when the notification is selected
            Intent notificationIntent = new Intent(mContext, MainActivity.class);
            notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            mContentIntent = PendingIntent.getActivity(mContext, 0, notificationIntent, 0);

            //add the additional content and intent to the notification
            mNotification.setLatestEventInfo(mContext, mContentTitle, mContentText, mContentIntent);

            //show the notification
            mNotificationManager.notify(mNotificationId, mNotification);
        }
    }

私は何をすべきか?デバイスにバイブレーターがあるかどうかを検出する必要がありますか? それとも別の方法ですか?そしてどうやって?

4

0 に答える 0