1

我开发了一个用于更改铃声的 Android 应用程序。它工作得很好,但有一件事困扰着我。

当我将铃声设置为通知音时,它会在我收到短信时播放。但是,如果我之前在 SMS 设置中选择了自定义 SMS 铃声(即默认情况下处于活动状态的“默认铃声”以外的任何内容),则在我收到 SMS 时不会播放新的通知音。

这可能会导致有人从 Android 市场安装铃声应用程序,设置通知音并感到失望,因为当他收到 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);
4

1 回答 1

2

除非您以 root 身份执行此操作,否则您无法执行此操作。

Stock MMS/SMS 应用程序使用的铃声存储在其自己的 shared_preferences 中。由于每个 shared_preference 只能由其所有者访问(这是由 android 强制执行的,除非您是 root 用户),所以根本不可能。

如果您有一部有根手机(或仅使用模拟器),您可以自己查找它并/data/data/com.android.mms/shared_prefs/com.android.mms_preferences.xml通过adb shell.

它包含应用程序使用的 shared_preferences,还包含一个pref_key_ringtone包含内容 URI 的键。

编辑:我还没有确认这一点,但我认为默认值pref_key_ringtone将设置为Settings.System.DEFAULT_NOTIFICATION_URI。这将在播放时路由到系统默认通知声音。当用户没有更改此设置时,您的解决方案将起作用。

于 2012-03-12T13:26:05.727 回答