Android 如何更改安卓手机的短信铃声,而不考虑当前的短信铃声设置?

Android 如何更改安卓手机的短信铃声,而不考虑当前的短信铃声设置?,android,sms,ringtone,Android,Sms,Ringtone,我已经开发了一个Android应用程序来更改铃声。它工作得很好,但有一件事困扰着我 当我将铃声设置为通知音时,它会在我收到短信时播放。但是,如果我在SMS设置中较早地选择了自定义SMS音调(即除默认情况下处于活动状态的“默认铃声”之外的任何内容),则当我收到SMS时,新的通知音调将不会播放 这可能会导致一种情况,即有人从Android market安装铃声应用程序,设置通知音调,并感到失望,因为当他收到短信时,所选的通知将不会播放。解决方法很简单(短信->设置->选择铃声->默认铃声),但如果他

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

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

这可能会导致一种情况,即有人从Android market安装铃声应用程序,设置通知音调,并感到失望,因为当他收到短信时,所选的通知将不会播放。解决方法很简单(短信->设置->选择铃声->默认铃声),但如果他不知道这一点,那真是麻烦事

这是我用来设置通知音调的方法:

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


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

stock MMS/SMS应用程序使用的铃声存储在其自己的共享首选项中。由于每个共享_首选项只能由其所有者访问(这是由android强制执行的,除非您是root用户),因此根本不可能

如果您有根手机(或只使用模拟器),您可以自己查找,并通过adb shell查看设备上的
/data/data/com.android.mms/shared\u prefs/com.android.mms\u preferences.xml

它包含应用程序使用的共享首选项,还包含一个包含内容URI的key
pref\u key\u铃声

编辑:
我还没有确认这一点,但我认为
pref\u key\u铃声的默认值将设置为。播放时,这将转到系统默认通知声音。当用户未更改此选项时,您的解决方案将起作用

谢谢你回答并消除了我的疑虑。我在手机上确认了pref_key_铃声偏好,是的,它是“content://settings/system/notification_sound“默认情况下,它将在通知声音更改时更改。您将在17小时内获得奖金(显然不可能在同一天给出答案。)您是如何更改通知的,我也有同样的问题。如上所述,您必须使用root权限,因为系统将不允许这种“权限破坏”(这是一件好事,但有时不是最佳的用户体验)。如果您真的想这样做,则必须将
sqlite3
二进制文件作为根调用并执行您的工作。
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, persistentUri);