Как изменить тональный сигнал SMS для Android, несмотря на текущую настройку тонального сигнала SMS? - PullRequest
1 голос
/ 03 марта 2012

Я разработал приложение для Android для смены мелодий звонка. Это работает довольно хорошо, но одна вещь беспокоит меня.

Когда я устанавливаю мелодию звонка в качестве сигнала уведомления, она воспроизводится при получении SMS-сообщения. Однако если в настройках SMS я ранее выбрал пользовательский тональный сигнал SMS (т. Е. Что-либо, кроме «Мелодия звонка по умолчанию», которая активна по умолчанию), новый тональный сигнал уведомления не будет воспроизводиться при получении SMS.

Это может привести к ситуации, когда кто-то установит приложение для мобильного телефона с Android Market, установит тон уведомления и будет разочарован, потому что выбранное уведомление не будет воспроизводиться, когда он получит SMS. Решение довольно простое (SMS -> Настройки -> Выбрать рингтон -> Рингтон по умолчанию), но это действительно неприятно, если он не знает этого.

Это то, что я использую для установки тона уведомления:

values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);

.....

RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, persistentUri);

1 Ответ

1 голос
/ 12 марта 2012

Вы не можете сделать это, если вы не используете его как root.

Рингтон, используемый в стандартном приложении MMS / SMS, хранится в его собственных shared_preferences.Так как каждый shared_preference доступен только его владельцу (это обеспечивается Android, если вы не являетесь пользователем root), это просто невозможно.

Вы можете посмотреть его самостоятельно, если у вас есть рутированный телефон (или просто используйте эмулятор) и посмотрите на /data/data/com.android.mms/shared_prefs/com.android.mms_preferences.xml на устройстве через adb shell.

. Содержит общие_преференции, используемые приложением, а также содержит ключ pref_key_ringtone, который содержит URI контента.: Я не подтвердил это, но я думаю, что значение pref_key_ringtone по умолчанию будет установлено на Settings.System.DEFAULT_NOTIFICATION_URI .Это приведет к звуковому уведомлению системы по умолчанию при воспроизведении.Когда пользователь не изменил это, ваше решение будет работать.

...